import type { ConversationOptions } from "./Conversation.js";
import { ConvoExecutionContext } from "./ConvoExecutionContext.js";
import { ConvoDocumentReference } from "./convo-rag-types.js";
import { ConvoBaseType, ConvoCompletion, ConvoCompletionMessage, ConvoCompletionService, ConvoFlowController, ConvoFunction, ConvoMessage, ConvoMessageModificationAction, ConvoMessageTemplate, ConvoMetadata, ConvoModelAlias, ConvoModelInfo, ConvoPrintFunction, ConvoScope, ConvoScopeError, ConvoScopeFunction, ConvoStatement, ConvoStringTemplateLiteralOptions, ConvoTag, ConvoThreadFilter, ConvoTokenUsage, ConvoTranscriptionRequest, ConvoTranscriptionSupportRequest, ConvoType, FlatConvoConversation, FlatConvoConversationBase, FlatConvoMessage, OptionalConvoValue, ParsedContentJsonOrString, StandardConvoSystemMessage, convoObjFlag } from "./convo-types.js";
import { ConvoGitFileStatus } from "./git/convo-git-types.js";
export declare const convoBodyFnName = "__body";
export declare const convoArgsName = "__args";
export declare const convoResultReturnName = "__return";
export declare const convoResultErrorName = "__error";
export declare const convoDisableAutoCompleteName = "__disableAutoComplete";
export declare const convoStructFnName = "struct";
export declare const convoNewFnName = "new";
export declare const convoMapFnName = "map";
export declare const convoArrayFnName = "array";
export declare const convoJsonMapFnName = "jsonMap";
export declare const convoJsonArrayFnName = "jsonArray";
export declare const convoSwitchFnName = "switch";
export declare const convoCaseFnName = "case";
export declare const convoDefaultFnName = "default";
export declare const convoTestFnName = "test";
export declare const convoPipeFnName = "pipe";
export declare const convoLocalFunctionModifier = "local";
export declare const convoExternFunctionModifier = "extern";
export declare const convoCallFunctionModifier = "call";
export declare const convoInvokeFunctionModifier = "invoke";
export declare const convoInvokeFunctionName = "invoke";
export declare const convoGlobalRef = "convo";
export declare const convoEnumFnName = "enum";
export declare const convoMetadataKey: unique symbol;
export declare const convoCaptureMetadataTag = "captureMetadata";
export declare const defaultConversationName = "default";
export declare const defaultConvoNodeId = "main";
export declare const convoUtilModels: {
    readonly empty: "empty";
    readonly echo: "echo";
};
export declare const convoLogDir = ".convo-lang-logs";
export declare const convoMsgModifiers: {
    /**
     * When applied to the function the function is used as the default function of an agent
     */
    readonly agent: "agent";
};
export declare const convoScopedModifiers: "agent"[];
export declare const defaultConvoTask = "default";
export declare const convoAnyModelName = "__any__";
export declare const convoRagTemplatePlaceholder = "$$RAG$$";
export declare const convoRoles: {
    /**
     * Represents messages from the user
     */
    readonly user: "user";
    /**
     * Represents messages from the LLM
     */
    readonly assistant: "assistant";
    /**
     * System instruction messages
     */
    readonly system: "system";
    /**
     * Groups messages together
     */
    readonly group: "group";
    /**
     * Ends a group of messages
     */
    readonly groupEnd: "groupEnd";
    /**
     * Used to add a prefix to the previous content message. Prefixes are not seen by the user.
     */
    readonly prefix: "prefix";
    /**
     * Used to add a suffix to the previous content message. Suffixes are not seen by the user.
     */
    readonly suffix: "suffix";
    /**
     * Appends content to the previous content message
     */
    readonly append: "append";
    /**
     * Appends content to the last system message
     */
    readonly appendSystem: "appendSystem";
    /**
     * Appends content to the last user message
     */
    readonly appendUser: "appendUser";
    /**
     * Appends content to the last assistant message
     */
    readonly appendAssistant: "appendAssistant";
    /**
     * Prepends content to the previous content message
     */
    readonly prepend: "prepend";
    /**
     * Used to replace the content of the previous content message
     */
    readonly replace: "replace";
    /**
     * Used to replace the content of the previous content message before sending to an LLM. The
     * user will continue to see the previous content message.
     */
    readonly replaceForModel: "replaceForModel";
    /**
     * Used to display message evaluated by inline / thinking prompts
     */
    readonly thinking: "thinking";
    /**
     * Used to set variables set within inline / thinking prompts
     */
    readonly thinkingResult: "thinkingResult";
    /**
     * Contains RAG content
     */
    readonly rag: "rag";
    /**
     * Used to define a prefix to add to rag messages
     */
    readonly ragPrefix: "ragPrefix";
    /**
     * Used to define a suffix to add to rag messages
     */
    readonly ragSuffix: "ragSuffix";
    /**
     * A message used as a template to insert RAG content into. The value $$RAG$$ will be used replaced with the actual rag content
     */
    readonly ragTemplate: "ragTemplate";
    /**
     * importTemplate messages are used to format imported content such as markdown.
     */
    readonly importTemplate: "importTemplate";
    /**
     * When encountered a conversation will executed the preceding message before continuing unless
     * preceded by a flushed message.
     */
    readonly queue: "queue";
    /**
     * signals a queue has been flushed
     */
    readonly flush: "flush";
    /**
     * Starts an insertion block. Insertion blocks are used to reorder messages in a flattened conversation.
     */
    readonly insert: "insert";
    /**
     * Ends an insertion block.
     */
    readonly insertEnd: "insertEnd";
    /**
     * No op role. Messages with this role are completely ignored
     */
    readonly nop: "nop";
    /**
     * Used to track transform results including tokens used by transforms
     */
    readonly transformResult: "transformResult";
    /**
     * Starts a parallel execution block
     */
    readonly parallel: "parallel";
    /**
     * Ends a parallel execution block
     */
    readonly parallelEnd: "parallelEnd";
    /**
     * Ends the definition of an agent
     */
    readonly agentEnd: "agentEnd";
    readonly call: "call";
    readonly do: "do";
    readonly result: "result";
    readonly define: "define";
    readonly debug: "debug";
    readonly end: "end";
    /**
     * Used by the convo make build system to define a make target. `std://make.convo` must
     * be imported to function correctly
     */
    readonly target: "target";
    /**
     * Used by the convo make build system to define target defaults and configure build options
     */
    readonly make: "make";
    /**
     * Used by the convo make build system to define an app. `std://make.convo` must
     * be imported to function correctly
     */
    readonly app: "app";
    /**
     * Used by the convo make build system to define a build stage. `std://make.convo` must
     * be imported to function correctly
     */
    readonly stage: "stage";
    /**
     * Groups following nodes as a single graph. The context of the
     */
    readonly graph: "graph";
    readonly graphEnd: "graphEnd";
    /**
     * Defines the start of a node. Messages following the node will be part of the node.
     */
    readonly node: "node";
    /**
     * Explicitly ends a node
     */
    readonly nodeEnd: "nodeEnd";
    /**
     * Defines a node to goto by id
     */
    readonly goto: "goto";
    /**
     * Indicates graph traversal has exited.
     */
    readonly exitGraph: "exitGraph";
    /**
     * Graph exit route
     */
    readonly exit: "exit";
    /**
     * Graph to route
     */
    readonly to: "to";
    /**
     * Graph from route
     */
    readonly from: "from";
    /**
     * A temporary message type use to pass convo source code.
     */
    readonly _sourceRef: "_sourceRef";
    readonly template: "template";
    readonly templateEnd: "templateEnd";
    /**
     * Indicates a worker is ready to run
     */
    readonly run: "run";
};
/**
 * List of built-in role that are allowed to be used with custom message handlers
 */
export declare const convoHandlerAllowedRoles: readonly ["make", "target", "app", "stage"];
/**
 * Reserved role names in Convo-Lang that have special meaning and cannot be used as custom roles.
 * These roles are used for system functionality like function calls, execution blocks, and debugging.
 */
export declare const convoReservedRoles: readonly ["call", "do", "result", "define", "debug", "end", "thinking"];
export declare const convoFunctions: {
    readonly queryImage: "queryImage";
    readonly getState: "getState";
    /**
     * When called __rag with be set to true and and params passed will be added the the __ragParams
     * array. If __ragParams is not an array it will be set to an array first. Duplicated values
     * will not be added to __ragParams.
     */
    readonly enableRag: "enableRag";
    /**
     * Disables and clears all rag params
     */
    readonly clearRag: "clearRag";
    /**
     * Defines a form that a user can be guided through
     */
    readonly defineForm: "defineForm";
    readonly today: "today";
    readonly uuid: "uuid";
    readonly shortUuid: "shortUuid";
    readonly getVar: "getVar";
    readonly setVar: "setVar";
    readonly idx: "idx";
    readonly describeScene: "describeScene";
    readonly readDoc: "readDoc";
    /**
     * States the default value of a variable.
     */
    readonly setDefault: "setDefault";
    /**
     * Returns an XML list of agents available to the current conversation.
     */
    readonly getAgentList: "getAgentList";
    /**
     * Explicitly enables a transform by name
     */
    readonly enableTransform: "enableTransform";
    /**
     * Explicitly enables all transforms
     */
    readonly enableAllTransforms: "enableAllTransforms";
    /**
     * Pushes a conversation task on to the task stack. The task will be display in the UI
     * while a completion is in progress
     */
    readonly pushConvoTask: "pushConvoTask";
    /**
     * Pops the last convo task off the stack
     */
    readonly popConvoTask: "popConvoTask";
    /**
     * Reads a JSON value from the virtual file system
     */
    readonly fsReadJson: "fsReadJson";
    /**
     * Reads a file from the virtual file system and returns it as a base64 string
     */
    readonly fsReadBase64: "fsReadBase64";
    /**
     * Reads a file from the virtual file system and returns it as a base64 url. This function can
     * be used to read files as images or other assets that get embedded as base 64 urls.
     *
     * @signature (path:string contentType?:string) -> string
     *
     * @example This is an image: ![image description]({{fsReadBase64Url("./images/example.png")}})
     */
    readonly fsReadBase64Url: "fsReadBase64Url";
    /**
     * Similar to fsReadBase64Url but returns an image formatted as markdown
     *
     * @signature (path:string description?:string contentType?:string) -> string
     */
    readonly fsReadBase64Image: "fsReadBase64Image";
    /**
     * Creates a markdown image from the given path and description. mdImg is an alias of `fsReadBase64Image`
     *
     * @signature (path:string description?:string contentType?:string) -> string
     */
    readonly mdImg: "mdImg";
    /**
     * Writes a JSON value to the virtual file system and returns the written value.
     */
    readonly fsWriteJson: "fsWriteJson";
    /**
     * Reads a string value from the virtual file system
     */
    readonly fsRead: "fsRead";
    /**
     * Reads multiple files as a single string using a list of names and an optional pattern that
     * the each name is inserted into.
     */
    readonly fsMultiRead: "fsMultiRead";
    /**
     * Writes a string value to the virtual file system and returns the written value.
     */
    readonly fsWrite: "fsWrite";
    /**
     * Append a string value to the virtual file system and returns the written value.
     */
    readonly fsAppend: "fsAppend";
    /**
     * Delete a file or directory from the virtual file system
     */
    readonly fsRemove: "fsRemove";
    /**
     * Creates a directory in the virtual file system
     */
    readonly fsMkDir: "fsMkDir";
    /**
     * Checks if a path exists in the virtual file system
     */
    readonly fsExists: "fsExists";
    /**
     * Reads directory items
     */
    readonly fsReadDir: "fsReadDir";
    /**
     * Returns the full and normalized path for the given value.
     */
    readonly fsFullPath: "fsFullPath";
    /**
     * Joins file paths
     */
    readonly joinPaths: "joinPaths";
    /**
     * Returns true if all values passed to the function are undefined
     */
    readonly isUndefined: "isUndefined";
    /**
     * Returns the number of keys in an option
     */
    readonly getObjKeyCount: "getObjKeyCount";
    /**
     * Returns the keys of an options
     */
    readonly getObjKeys: "getObjKeys";
    /**
     * Returns the values of an options
     */
    readonly getObjKeyValues: "getObjKeyValues";
    /**
     * Returns the passed in value as milliseconds
     */
    readonly secondMs: "secondMs";
    /**
     * Returns the passed in value as milliseconds
     */
    readonly minuteMs: "minuteMs";
    /**
     * Returns the passed in value as milliseconds
     */
    readonly hourMs: "hourMs";
    /**
     * Returns the passed in value as milliseconds
     */
    readonly dayMs: "dayMs";
    /**
     * Finds an item in an array using shallow comparison.
     */
    readonly aryFindMatch: "aryFindMatch";
    /**
     * Finds an item's index in an array using shallow comparison.
     */
    readonly aryFindIndex: "aryFindIndex";
    /**
     * Removes the first matching item in an array using shallow comparison.
     */
    readonly aryRemoveMatch: "aryRemoveMatch";
    /**
     * Used by the convo make build system to define target defaults and build options
     */
    readonly makeDefaults: "makeDefaults";
    /**
     * Used by the convo make build system to define a output to make
     */
    readonly makeTarget: "makeTarget";
    /**
     * Defines a make app
     */
    readonly makeApp: "makeApp";
    /**
     * Defines a make stage
     */
    readonly makeStage: "makeStage";
    /**
     * Similar to the map function except unlabeled values are place the the `_` property
     */
    readonly mapWithCapture: "mapWithCapture";
    /**
     * Used to access properties of a make target by path
     */
    readonly mkt: "mkt";
    /**
     * Returns information about the current graph node or a node by step index.
     * Negative indexes can be used to return nodes indexed from the end of the node stack
     */
    readonly getNodeInfo: "getNodeInfo";
    /**
     * Returns node input for the current graph node or a node by step index.
     * Negative indexes can be used to return nodes indexed from the end of the node stack
     */
    readonly getNodeInput: "getNodeInput";
    /**
     * Configures the ConvoDb connection
     */
    readonly dbConfig: "dbConfig";
    /**
     * Queries the ConvoDb
     */
    readonly dbQueryNodes: "dbQueryNodes";
    /**
     * Returns nodes matching a given path. A wildcard path (path ending with /*) can return multiple
     * nodes
     */
    readonly dbGetNodesByPath: "dbGetNodesByPath";
    /**
     * Gets the permissions from one node to another
     */
    readonly dbGetNodePermission: "dbGetNodePermission";
    /**
     * Checks if one node has permission to another
     */
    readonly dbCheckNodePermission: "dbCheckNodePermission";
    /**
     * Inserts a node
     */
    readonly dbInsertNode: "dbInsertNode";
    /**
     * Updates a node
     */
    readonly dbUpdateNode: "dbUpdateNode";
    /**
     * Deletes a node
     */
    readonly dbDeleteNode: "dbDeleteNode";
    /**
     * Queries edges
     */
    readonly dbQueryEdges: "dbQueryEdges";
    /**
     * Gets an edge by id
     */
    readonly dbGetEdgeById: "dbGetEdgeById";
    /**
     * Inserts an edge
     */
    readonly dbInsertEdge: "dbInsertEdge";
    /**
     * Updates an edge
     */
    readonly dbUpdateEdge: "dbUpdateEdge";
    /**
     * Deletes an edge
     */
    readonly dbDeleteEdge: "dbDeleteEdge";
    /**
     * Queries embeddings
     */
    readonly dbQueryEmbeddings: "dbQueryEmbeddings";
    /**
     * Gets an embedding by id
     */
    readonly dbGetEmbeddingById: "dbGetEmbeddingById";
    /**
     * Inserts an embedding
     */
    readonly dbInsertEmbedding: "dbInsertEmbedding";
    /**
     * Updates an embedding
     */
    readonly dbUpdateEmbedding: "dbUpdateEmbedding";
    /**
     * Deletes an embedding
     */
    readonly dbDeleteEmbedding: "dbDeleteEmbedding";
};
/**
 * reserved system variables
 */
export declare const convoVars: {
    readonly __return: "__return";
    /**
     * Used to enabled prompt caching. A value of true will use the default prompt cached which
     * by default uses the `ConvoLocalStorageCache`. If assigned a string a cache with a matching
     * type will be used.
     */
    readonly __cache: "__cache";
    /**
     * In environments that have access to the filesystem __cwd defines the current working directory.
     */
    readonly __cwd: "__cwd";
    /**
     * Path to the main file that loaded the conversation
     */
    readonly __mainFile: "__mainFile";
    /**
     * Path to the current convo file
     */
    readonly __file: "__file";
    /**
     * When set to true debugging information will be added to conversations.
     */
    readonly __debug: "__debug";
    /**
     * Sets the default model
     */
    readonly __model: "__model";
    /**
     * Sets the default completion endpoint
     */
    readonly __endpoint: "__endpoint";
    /**
     * Endpoint to a convo compatible endpoint
     */
    readonly __convoEndpoint: "__convoEndpoint";
    /**
     * API key to send to completions endpoint. The `apiKey` of the `FlatConvoConversationBase` will
     * be populated by this variable if defined.
     */
    readonly __apiKey: "__apiKey";
    /**
     * Sets the default user id of the conversation
     */
    readonly __userId: "__userId";
    /**
     * When set to true time tracking will be enabled.
     */
    readonly __trackTime: "__trackTime";
    /**
     * When set to true token usage tracking will be enabled.
     */
    readonly __trackTokenUsage: "__trackTokenUsage";
    /**
     * When set to true the model used as a completion provider will be tracked.
     */
    readonly __trackModel: "__trackModel";
    /**
     * When defined __visionSystemMessage will be injected into the system message of conversations
     * with vision capabilities. __visionSystemMessage will override the default vision
     * system message.
     */
    readonly __visionSystemMessage: "__visionSystemMessage";
    /**
     * The default system message used for completing vision requests. Vision requests are typically
     * completed in a separate conversation that supports vision messages. By default the system
     * message of the conversation that triggered the vision request will be used.
     */
    readonly __visionServiceSystemMessage: "__visionServiceSystemMessage";
    /**
     * Response used with the system is not able to generate a vision response.
     */
    readonly __defaultVisionResponse: "__defaultVisionResponse";
    /**
     * A reference to markdown vars.
     */
    readonly __md: "__md";
    /**
     * Enables retrieval augmented generation (RAG). The value of the __rag can either be true,
     * false or a number. The value indicates the number of rag results that should be sent to the
     * LLM by default all rag message will be sent to the LLM. When setting the number of rag
     * messages to a fixed number only the last N number of rag messages will be sent to the LLM.
     * Setting __rag to a fixed number can help to reduce prompt size.
     */
    readonly __rag: "__rag";
    /**
     * An object that will be passed to the rag callback of a conversation. If the value is not an
     * object it is ignored.
     */
    readonly __ragParams: "__ragParams";
    /**
     * The tolerance that determines if matched rag content should be included as contact.
     */
    readonly __ragTol: "__ragTol";
    /**
     * Sets the current thread filter. Can either be a string or a ConvoThreadFilter. If __threadFilter
     * is a string it will be converted into a filter that looks like `{includeThreads:[__threadId]}`.
     */
    readonly __threadFilter: "__threadFilter";
    /**
     * A reference to a SceneCtrl that is capable of describing the current scene the user is viewing.
     */
    readonly __sceneCtrl: "__sceneCtrl";
    /**
     * The last described scene added to the conversation
     */
    readonly __lastDescribedScene: "__lastDescribedScene";
    /**
     * Used by agents to define the voice they use
     */
    readonly __voice: "__voice";
    /**
     * used to indicate that forms have been enabled
     */
    readonly __formsEnabled: "__formsEnabled";
    /**
     * Default array of forms
     */
    readonly __forms: "__forms";
    /**
     * Array of transforms names that have explicity been enabled. Transforms are enabled by default
     * unless they have the `transformOptional` tag applied. Adding "all" to the list will explicity
     * enable all components.
     */
    readonly __explicitlyEnabledTransforms: "__explicitlyEnabledTransforms";
    /**
     * Name of the currently executing trigger
     */
    readonly __trigger: "__trigger";
    /**
     * If true inline prompt messages should be written to debug output
     */
    readonly __debugInline: "__debugInline";
    /**
     * Controls the penalty for repeated tokens in completions.
     */
    readonly __frequencyPenalty: "__frequencyPenalty";
    /**
     * Controls the penalty for new tokens based on their presence in the text so far.
     */
    readonly __presencePenalty: "__presencePenalty";
    /**
     * If set, requests log probabilities of generated tokens.
     */
    readonly __logprobs: "__logprobs";
    /**
     * Sets the maximum number of tokens to generate in a completion.
     */
    readonly __maxTokens: "__maxTokens";
    /**
     * Indicates the level of reasoning effort to apply.
     */
    readonly __reasoningEffort: "__reasoningEffort";
    /**
     * Sets the random seed for reproducible completions.
     */
    readonly __seed: "__seed";
    /**
     * Specifies the service tier to use for completions.
     */
    readonly __serviceTier: "__serviceTier";
    /**
     * Controls the randomness of completions (temperature parameter).
     */
    readonly __temperature: "__temperature";
    /**
     * Controls the nucleus sampling parameter for completions (top_p).
     */
    readonly __topP: "__topP";
    /**
     * Requests the log probabilities for the top tokens.
     */
    readonly __topLogprobs: "__topLogprobs";
    /**
     * Controls the verbosity of the model's response.
     */
    readonly __responseVerbosity: "__responseVerbosity";
    /**
     * Allows biasing the likelihood of specific tokens.
     */
    readonly __logitBias: "__logitBias";
    /**
     * Object containing additional parameters to pass to the LLM.
     */
    readonly __modelParams: "__modelParams";
    /**
     * Array of ConvoMakeApp objects
     */
    readonly __makeDefaults: "__makeDefaults";
    /**
     * Array of ConvoMakeTargetDeclaration objects
     */
    readonly __makeTargets: "__makeTargets";
    /**
     * Array of ConvoMakeApp objects
     */
    readonly __makeApps: "__makeApps";
    /**
     * Array of ConvoMakeStage objects
     */
    readonly __makeStages: "__makeStages";
    /**
     * Relative path to the make directory the current convo file was created in
     */
    readonly __makeRoot: "__makeRoot";
    readonly __makeFile: "__makeFile";
    readonly __makeOut: "__makeOut";
    /**
     * Maps custom messages to handler functions
     */
    readonly __messageHandlers: "__messageHandlers";
    /**
     * Name of a type to be used as the default json response type
     */
    readonly __defaultResponseType: "__defaultResponseType";
    /**
     * Sets the default node context depth
     */
    readonly __nodeContextDepth: "__nodeContextDepth";
    /**
     * Stores historical node information including each node input
     */
    readonly __nodeStack: "__nodeStack";
    /**
     * A reference to a ConvoDb
     */
    readonly __db: "__db";
    /**
     * A ConvoDb connection string
     */
    readonly __dbConnection: "__dbConnection";
};
export declare const convoImportModifiers: {
    /**
     * Only system messages should be imported
     */
    readonly system: "system";
    /**
     * Content messages should be ignored
     */
    readonly ignoreContent: "ignoreContent";
    /**
     * Merges the contents of multiple files into a single imports. This is useful when importing
     * multiple content files using a glob.
     */
    readonly merge: "merge";
};
/**
 * Used to indicate a result message will take over control flow
 */
export declare const convoControlResult: unique symbol;
export declare const convoControlResultKeys: {
    readonly source: "source";
    readonly messages: "messages";
};
export declare const defaultConvoRagTol = 1.2;
export declare const convoEvents: {
    /**
     * Occurs when a user message is added to a conversation
     *
     * Functions listening to the `user` event will be called after user messages are
     * appended. The return value of the function will either replaces the content of the user
     * message or will be set as the messages prefix or suffix. If the function return false, null or
     * undefined it is ignored and the next function listening to the `user` event will be called.
     *
     * @usage (@)on user [replace|append|prepend|prefix|suffix] [condition]
     */
    readonly user: "user";
    /**
     * Occurs when an assistant message is added to a conversation.
     *
     * Functions listening to the `assistant` event will be called after assistant messages are
     * appended. The return value of the function will either replaces the content of the assistant
     * message or will be set as the messages prefix or suffix. If the function return false, null or
     * undefined it is ignored and the next function listening to the `assistant` event will be called.
     *
     * @usage (@)on assistant [replace|append|prepend|prefix|suffix] [condition]
     */
    readonly assistant: "assistant";
};
export declare const convoTags: {
    /**
     * When applied to a user message and the message is the last message in a conversation the message
     * is considered a conversation initializer.
     */
    readonly init: "init";
    /**
     * Used to set the name of the message
     */
    readonly name: "name";
    /**
     * Defines an event listener for a message. Functions tagged with `@on` will
     * be made local and not visible to LLMs.
     */
    readonly on: "on";
    /**
     * Enable rag for a message. The value of the tag will be added as a rag path
     */
    readonly ragForMsg: "ragForMsg";
    /**
     * Enables rag for the current conversation
     */
    readonly rag: "rag";
    /**
     * Defines the start index and length of the actual rag content without prefix and suffix
     */
    readonly ragContentRage: "ragContentRage";
    /**
     * Name of the server a message was created from.
     */
    readonly fromMcp: "fromMcp";
    /**
     * Marks a message as a resource list from an MCP server
     */
    readonly mcpResourceList: "mcpResourceList";
    /**
     * Manually labels a message
     */
    readonly label: "label";
    /**
     * Clears all content messages that precede the messages with the exception of system messages.
     * If the value of "system" is given as the tags value system message will also be cleared.
     */
    readonly clear: "clear";
    /**
     * Prevents a message from being clear when followed by a message with a `@clear` tag applied.
     */
    readonly noClear: "noClear";
    /**
     * Enables caching for the message the tag is applied to. No value of a value of true will use
     * the default prompt cached which by default uses the `ConvoLocalStorageCache`. If assigned
     * a string a cache with a matching type will be used.
     */
    readonly cache: "cache";
    /**
     * Controls the penalty for repeated tokens in completions for the message the tag is applied to.
     */
    readonly frequencyPenalty: "frequencyPenalty";
    /**
     * Controls the penalty for new tokens based on their presence in the text so far for the message the tag is applied to.
     */
    readonly presencePenalty: "presencePenalty";
    /**
     * If set, requests log probabilities of generated tokens for the message the tag is applied to.
     */
    readonly logprobs: "logprobs";
    /**
     * Sets the maximum number of tokens to generate in a completion for the message the tag is applied to.
     */
    readonly maxTokens: "maxTokens";
    /**
     * Indicates the level of reasoning effort to apply for the message the tag is applied to.
     */
    readonly reasoningEffort: "reasoningEffort";
    /**
     * Sets the random seed for reproducible completions for the message the tag is applied to.
     */
    readonly seed: "seed";
    /**
     * Specifies the service tier to use for completions for the message the tag is applied to.
     */
    readonly serviceTier: "serviceTier";
    /**
     * Controls the randomness of completions (temperature parameter) for the message the tag is applied to.
     */
    readonly temperature: "temperature";
    /**
     * Controls the nucleus sampling parameter for completions (top_p) for the message the tag is applied to.
     */
    readonly topP: "topP";
    /**
     * Requests the log probabilities for the top tokens for the message the tag is applied to.
     */
    readonly topLogprobs: "topLogprobs";
    /**
     * Controls the verbosity of the model's response for the message the tag is applied to.
     */
    readonly responseVerbosity: "responseVerbosity";
    /**
     * Object containing additional parameters to pass to the LLM for the message the tag is applied to.
     */
    readonly modelParams: "modelParams";
    /**
     * When applied to a function the return value of the function will not be used to generate a
     * new assistant message.
     */
    readonly disableAutoComplete: "disableAutoComplete";
    /**
     * Disables triggers on the message the tag is applied to.
     */
    readonly disableTriggers: "disableTriggers";
    /**
     * Forces a message to be included in triggers. If the tag defines a value the value will be used
     * to match which trigger the message is included in.
     */
    readonly includeInTriggers: "includeInTriggers";
    /**
     * Excludes a message from being included in triggers. If the tag defines a value the value will
     * be used to match the trigger it is excluded from.
     */
    readonly excludeFromTriggers: "excludeFromTriggers";
    /**
     * When applied to a content message the message will be appended to the conversation after calling the
     * function specified by the tag's value. When applied to a function message the content of the
     * tag will be appended as a user message.
     */
    readonly afterCall: "afterCall";
    /**
     * When used with the `afterCall` tag the appended message will be hidden from the user but
     * visible to the LLM
     */
    readonly afterCallHide: "afterCallHide";
    /**
     * When used with the `afterCall` tag the appended message will use the given role
     */
    readonly afterCallRole: "afterCallRole";
    /**
     * Indicates a message was created by a afterCall tag
     */
    readonly createdAfterCalling: "createdAfterCalling";
    /**
     * Applied to result values to indicate they will alter the control flow of a conversation.
     */
    readonly controlResult: "controlResult";
    /**
     * Used to indicate that a message should be evaluated at the edge of a conversation with the
     * latest state. (@)edge is most commonly used with system message to ensure that all injected values
     * are updated with the latest state of the conversation.
     */
    readonly edge: "edge";
    /**
     * Alias for (@)order 0
     */
    readonly top: "top";
    /**
     * Sets the order which the tagged message appears. negative value are inserted form the end
     * of the conversation
     */
    readonly order: "order";
    /**
     * Used to track the time messages are created.
     */
    readonly time: "time";
    /**
     * Used to track the number of tokens a message used
     */
    readonly tokenUsage: "tokenUsage";
    /**
     * Used to track the model used to generate completions
     */
    readonly model: "model";
    /**
     * Sets the requested model to complete a message with
     */
    readonly responseModel: "responseModel";
    /**
     * Used to track the endpoint to generate completions
     */
    readonly endpoint: "endpoint";
    /**
     * Sets the requested endpoint to complete a message with
     */
    readonly responseEndpoint: "responseEndpoint";
    /**
     * Sets the format as message should be responded to with.
     */
    readonly responseFormat: "responseFormat";
    /**
     * Causes the response of the tagged message to be assigned to a variable
     */
    readonly assign: "assign";
    /**
     * When used with a message the json tag is short and for `@responseFormat json`
     */
    readonly json: "json";
    /**
     * The format of a message
     */
    readonly format: "format";
    /**
     * Used to assign the content or jsonValue of a message to a variable
     */
    readonly assignTo: "assignTo";
    /**
     * Used to enable capabilities. Only the first and last message in the conversation are used
     * to determine current capabilities. Multiple capability tags can be
     * applied to a message and multiple capabilities can be specified by separating them with a
     * comma.
     */
    readonly capability: "capability";
    /**
     * Shorthand for `@capability vision`
     * Enables vision for all messages in a conversation
     */
    readonly enableVision: "enableVision";
    /**
     * Shorthand for `@capability visionFunction`
     * The visionFunction capability adds vision support by passing vision messages to a vision model
     * and exposing vision capabilities as a function.
     */
    readonly enabledVisionFunction: "enabledVisionFunction";
    /**
     * Enables vision for the message the tag is applied to
     */
    readonly vision: "vision";
    /**
     * Sets the task a message is part of. By default messages are part of the "default" task
     */
    readonly task: "task";
    /**
     * Can be used by functions to display a task message while the function is executing.
     */
    readonly taskName: "taskName";
    /**
     * Can be used by functions to display a task message while the function is executing.
     */
    readonly taskDescription: "taskDescription";
    /**
     * Sets the max number of non-system messages that should be included in a task completion
     */
    readonly maxTaskMessageCount: "maxTaskMessageCount";
    /**
     * Defines what triggers a task
     */
    readonly taskTrigger: "taskTrigger";
    /**
     * Defines a message as a template
     */
    readonly template: "template";
    /**
     * used to track the name of templates used to generate messages
     */
    readonly sourceTemplate: "sourceTemplate";
    /**
     * Used to mark a message as a component. The value can be "render" or "input". The default
     * value is "render" if no value is given. When the "input" value is used the rendered component
     * will take input from a user then write the input received to the executing conversation.
     */
    readonly component: "component";
    /**
     * When applied to a message the message should be rendered but not sent to LLMs
     */
    readonly renderOnly: "renderOnly";
    /**
     * Controls where a message is rendered. By default messages are rendered in the default chat
     * view, but applications can define different render targets.
     */
    readonly renderTarget: "renderTarget";
    /**
     * Sets the renderTarget of the message to "hidden"
     */
    readonly hidden: "hidden";
    readonly toolId: "toolId";
    /**
     * When applied to the last content or component messages auto scrolling will be disabled
     */
    readonly disableAutoScroll: "disableAutoScroll";
    /**
     * When applied to a message the content of the message will be parsed as markdown
     */
    readonly markdown: "markdown";
    /**
     * When applied to a message the content of the message will be parsed as markdown and the
     * elements of the markdown will be auto assigned to vars
     */
    readonly markdownVars: "markdownVars";
    /**
     * When applied to a message the message is conditionally added to the flattened view of a
     * conversation. When the condition is false the message will not be visible to the user
     * or the LLM.
     *
     * @note The example below uses (@) instead of the at symbol because of a limitation of jsdoc.
     *
     * The example below will only render and send the second system message to the LLM
     * @example
     *
     * ``` convo
     * > define
     * animal = 'dog'
     *
     * (@)condition animal frog
     * > system
     * You are a frog and you like to hop around.
     *
     * (@)condition animal dog
     * > system
     * You are a dog and you like to eat dirt.
     * ```
     */
    readonly condition: "condition";
    /**
     * When applied to a message the message is completely disregarded and removed from the conversation
     */
    readonly disabled: "disabled";
    /**
     * Reference to a document related to a message. Typically used with RAG.
     */
    readonly docRef: "docRef";
    /**
     * When applied to a message the message becomes a clickable suggestion that when clicked will
     * add a new user message with the content of the message. If the suggestion tag defines a value
     * that value will be displayed on the clickable button instead of the message content but the
     * message content will still be used as the user messaged added to the conversation when clicked.
     * Suggestion message are render only and not seen by LLMs.
     */
    readonly suggestion: "suggestion";
    /**
     * A title display above a group of suggestions
     */
    readonly suggestionTitle: "suggestionTitle";
    /**
     * A function to call when a suggestion is selected by the user instead of sending message to LLM
     */
    readonly suggestionCallback: "suggestionCallback";
    /**
     * Sets the threadId of the current message and all following messages. Using the `@thread` tag
     * without a value will clear the current thread id.
     */
    readonly thread: "thread";
    /**
     * Defines a path to write a messages output to
     */
    readonly output: "output";
    /**
     * Used to mark a function as an error callback
     */
    readonly errorCallback: "errorCallback";
    /**
     * Used to import external convo script code or other resource types.
     *
     * @usage
     * (@)import [type[:label]] url
     */
    readonly import: "import";
    /**
     * Matches an import by path. The match value can use wild cards are be a regular expression.
     * Regular expressions start with a (!) followed by a space then the regular expression pattern
     *
     * @example // By path
     * (@)importMatch ./company-policies.md
     *
     * @example // wildcard
     * (@)importMatch *policies.md
     *
     * @example // regular expression
     * (@)importMatch ! policies\.(md|mdx)$
     */
    readonly importMatch: "importMatch";
    readonly importRole: "importRole";
    /**
     * Causes a message to be concatenated with the previous message. Both the message the tag
     * is attached to and the previous message must be content messages or the tag is ignored.
     * When a message is concatenated to another message all other tags except the condition
     * tag are ignored.
     */
    readonly concat: "concat";
    /**
     * Instructs the LLM to call the specified function. The values "none", "required", "auto" have
     * a special meaning. If no name is given the special "required" value is used.
     * - none: tells the LLM to not call any functions
     * - required: tells the LLM it must call a function, any function.
     * - auto: tells the LLM it can call a function respond with a text response. This is the default behaviour.
     */
    readonly call: "call";
    /**
     * Causes the message to be evaluated as code. The code should be contained in a markdown code block.
     */
    readonly eval: "eval";
    /**
     * Id of the user that created the message
     */
    readonly userId: "userId";
    /**
     * Causes all white space in a content message to be preserved. By define all content message
     * whitespace is preserved.
     */
    readonly preSpace: "preSpace";
    /**
     * Indicates a message is the system message used to give an LLM instructions on how to use
     * agents
     */
    readonly agentSystem: "agentSystem";
    /**
     * Defines capabilities for a message
     */
    readonly cap: "cap";
    /**
     * Conversation ID
     */
    readonly cid: "cid";
    /**
     * Adds a message to a transform group. Transform groups are used to transform assistant output.
     * The transform tags value can be the name of a type or empty. Transform groups are ran after all
     * text responses from the assistant. Transform messages are not added to the flattened conversation.
     */
    readonly transform: "transform";
    /**
     * Sets the name of the transform group a message will be added to when the transform tag is used.
     */
    readonly transformGroup: "transformGroup";
    /**
     * If present on a transform message the source message processed will be hidden from the user
     * but still visible to the LLM
     */
    readonly transformHideSource: "transformHideSource";
    /**
     * Overrides `transformHideSource` and `transformRemoveSource`
     */
    readonly transformKeepSource: "transformKeepSource";
    /**
     * If present on a transform message the source message processed will not be added to the
     * conversation
     */
    readonly transformRemoveSource: "transformRemoveSource";
    /**
     * If present the transformed message has the `renderOnly` tag applied to it causing it to be
     * visible to the user but not the LLM.
     */
    readonly transformRenderOnly: "transformRenderOnly";
    /**
     * A transform condition that will control if the component tag can be passed to the created message
     */
    readonly transformComponentCondition: "transformComponentCondition";
    /**
     * Messages created by the transform will include the defined tag
     * @example (@)transformTag renderTarget sideBar
     */
    readonly transformTag: "transformTag";
    /**
     * A shortcut tag combines the `transform`, `transformTag`, `transformRenderOnly`, `transformComponentCondition`
     * and `transformHideSource` tags to create a transform that renders a
     * component based on the data structure of a named
     * struct.
     * @usage (@)transformComponent [groupName] {componentName} {propType} [?[!] condition]
     *
     * Renders the CarView component after every assistant message. The transform is using the default transform group.
     * @example (@)transformComponent CarView CarProps
     *
     * Renders the CatPickerView component if the transformed message is a json object with the "type" key is set to cat.
     * The transform is in the CatPicker transform group.
     * @example (@)transformComponent CatPicker CatPickerView AnimalPrefs ? type cat
     *
     * Renders the AnimalsOtherThanPickerView component if the transformed message is a json object with the "type" key is NOT set to cat.
     * The transform is in the default transform group.
     * @example (@)transformComponent AnimalsOtherThanPickerView AnimalPrefs ?! type cat
     */
    readonly transformComponent: "transformComponent";
    /**
     * Applied to messages created by a transform
     */
    readonly createdByTransform: "createdByTransform";
    /**
     * When applied to a message the message will be included in all transform prompts. It is common
     * to apply includeInTransforms to system messages
     */
    readonly includeInTransforms: "includeInTransforms";
    /**
     * Describes what the result of the transform is
     */
    readonly transformDescription: "transformDescription";
    /**
     * If applied to a transform message it will not be passed through a filter prompt
     */
    readonly transformRequired: "transformRequired";
    /**
     * When applied to a message the transform filter will be used to select which transforms to
     * to select. The default filter will list all transform groups and their descriptions to select
     * the best fitting transform for the assistants response
     */
    readonly transformFilter: "transformFilter";
    /**
     * If applied to a transform message the transform must be explicity enabled applying the `enableTransform`
     * tag to another message or calling the enableTransform function.
     */
    readonly transformOptional: "transformOptional";
    /**
     * Applied to transform output messages when overwritten by a transform with a higher priority
     */
    readonly overwrittenByTransform: "overwrittenByTransform";
    /**
     * Explicitly enables a transform. Transforms are enabled by default unless the transform has
     * the `transformOptional` tag applied.
     */
    readonly enableTransform: "enableTransform";
    /**
     * Defines a component to render a function result
     */
    readonly renderer: "renderer";
    /**
     * Indicates a message is a standard system message. Standard system messages are used to
     * implement common patterns such as the moderator pattern.
     */
    readonly stdSystem: "stdSystem";
    /**
     * Prevents a message from accepting modifiers and allows modifiers to flow through the message
     */
    readonly disableModifiers: "disableModifiers";
    /**
     * Attached to a message to indicate the user has reached their limit of tokens
     */
    readonly tokenLimit: "tokenLimit";
    /**
     * When applied to a node message a `to` route for is added to the node.
     */
    readonly to: "to";
    /**
     * When applied to a node message a `from` route for is added to the node.
     */
    readonly from: "from";
    /**
     * When applied to a node message an `exit` route for is added to the node.
     */
    readonly exit: "exit";
    /**
     * Used by graph messages to mark their default entry node
     */
    readonly entryNode: "entryNode";
    /**
     * Controls the LLM model used to evaluate route conditions.
     */
    readonly routingModel: "routingModel";
    /**
     * When applied to a node message forking node execution is allowed. When execution is allowed
     * to be forked all routes with a true condition will be taken and if more than one route is
     * taken a new conversation will be created.
     */
    readonly fork: "fork";
    /**
     * Controls the number of node contexts to include in the context of the node.
     */
    readonly contextDepth: "contextDepth";
    /**
     * Causes a content message to be included in node execution context. By Default all non-node
     * messages are excluded from node execution context.
     */
    readonly includeInNodes: "includeInNodes";
    /**
     * Defines the input type expected by a node. If the input for a node does not match
     * its input type the input will attempted to be converted using natural language
     */
    readonly inputType: "inputType";
    /**
     * Indicates a message is the result of input conversation
     */
    readonly inputConversation: "inputConversation";
    /**
     * Use to mark a function as a message handler. Functions tagged with `@messageHandler` will
     * be made local and not visible to LLMs.
     */
    readonly messageHandler: "messageHandler";
    /**
     * Name of the prop that the head value of handles messages are passed to.
     * @default "name"
     */
    readonly messageHandlerHeadProp: "messageHandlerHeadProp";
    /**
     * When applied to a message handler the handler will assume the location of the message
     * the handler is handling
     */
    readonly assumeHandledMessageLocation: "assumeHandledMessageLocation";
    /**
     * Enables auto memory management in works
     */
    readonly autoMemory: "autoMemory";
    /**
     * Causes the output of a message to be saved as a workers memory
     */
    readonly saveMemory: "saveMemory";
};
/**
 * Functions marked with tags defined in `localFunctionTags` will be marked as local and not visible
 * to LLMs.
 */
export declare const localFunctionTags: string[];
/**
 * Tags that are allowed to have dynamic expressions as the value when using the equals operator.
 * @example (@)condition = eq(name "Bob")
 */
export declare const convoDynamicTags: string[];
/**
 * Tags who's first word on its value will be used as a label
 */
export declare const convoLabeledTags: string[];
/**
 * Tags who's dynamic values will not be evaled when flattening. This can be useful when defining
 * tags who's dynamic value will be used out of line of the flattening of a conversation.
 */
export declare const convoDisableStatementEvalTags: string[];
/**
 * Tags whom have a dynamic expression will be evaluated as an anonymous type
 */
export declare const convoAnonTypeTags: string[];
/**
 * Prefix used to define anonymous types
 */
export declare const convoAnonTypePrefix = "AnonType_";
/**
 * JSDoc tags can be used in combination with the Convo-Lang CLI to import types, components and
 * functions from TypeScript.
 */
export declare const convoJsDocTags: {
    /**
     * Marks a function or class as a convo component
     */
    readonly convoComponent: "convoComponent";
    /**
     * When used with a component the source message that gets transform into the component should be
     * kept visible in the conversation
     */
    readonly convoKeepSource: "convoKeepSource";
    /**
     * Used to ignore properties in a type
     */
    readonly convoIgnore: "convoIgnore";
    /**
     * Marks a interface or type as a type to define in convo
     */
    readonly convoType: "convoType";
    /**
     * Marks a function as a function to define in convo
     */
    readonly convoFn: "convoFn";
    /**
     * Used with the convoFn tag to mark a function as local. When a function is local it is not
     * exposed to the LLM but can be called from convo scripts.
     */
    readonly convoLocal: "convoLocal";
};
export declare const convoTaskTriggers: {
    /**
     * Triggers a text message is received. Function calls will to trigger.
     */
    readonly onResponse: "onResponse";
};
export declare const commonConvoCacheTypes: {
    localStorage: string;
    memory: string;
    vfs: string;
    userVfs: string;
};
/**
 * In the browser the default cache type is local storage and on the backend vfs is the default cache type.
 */
export declare const defaultConvoCacheType: string;
export declare const convoDateFormat = "yyyy-MM-dd'T'HH:mm:ssxxx";
export declare const defaultConvoRenderTarget = "default";
export declare const defaultConvoTransformGroup = "default";
export declare const convoStdImportPrefix = "std://";
export declare const getConvoDateString: (date?: Date | number) => string;
export declare const defaultConvoVisionSystemMessage: string;
export declare const defaultConvoVisionResponse = "Unable to answer or respond to questions or requests for the given image or images";
export declare const allowedConvoDefinitionFunctions: readonly ["new", "struct", "map", "mapWithCapture", "array", "enum", "jsonMap", "jsonArray", "getState", "enableRag", "clearRag", "defineForm", "uuid", "shortUuid", "getVar", "setVar", "idx", "setDefault", "enableTransform", "enableAllTransforms", "isUndefined", "secondMs", "minuteMs", "hourMs", "dayMs", "aryFindMatch", "aryRemoveMatch", "dbConfig", "merge", "print", "setObjDefaults", "is", "and", "or", "not", "no", "neq", "eq", "gt", "gte", "lt", "lte", "isIn", "contains", "regexMatch", "starMatch", "deepCompare", "add", "sub", "mul", "div", "mod", "pow", "inc", "dec", "rand", "now", "dateTime", "encodeURI", "encodeURIComponent"];
export declare const passthroughConvoInputType = "FlatConvoConversation";
export declare const passthroughConvoOutputType = "ConvoCompletionMessageAry";
export declare const createOptionalConvoValue: (value: any) => OptionalConvoValue;
export declare const createConvoType: (typeDef: Omit<ConvoType, typeof convoObjFlag>) => ConvoType;
export declare const createConvoBaseTypeDef: (type: ConvoBaseType) => ConvoType;
export declare const makeAnyConvoType: <T>(type: ConvoBaseType, value: T) => T;
interface CreateConvoScopeFunctionOverloads {
    (): ConvoScopeFunction;
    (fn: ConvoScopeFunction): ConvoScopeFunction;
    (flowCtrl: ConvoFlowController, fn?: ConvoScopeFunction): ConvoScopeFunction;
}
export declare const createConvoScopeFunction: CreateConvoScopeFunctionOverloads;
export declare const getConvoBufferedOutputScope: (from: ConvoScope) => ConvoScope | undefined;
export declare const isConvoScopeFunction: (value: any) => value is ConvoScopeFunction;
export declare const setConvoScopeError: (scope: ConvoScope | null | undefined, error: ConvoScopeError | string) => void;
export declare const convoTagMapToCode: (tagsMap: Record<string, string | undefined>, append?: string, tab?: string) => string;
export declare const containsConvoTag: (tags: ConvoTag[] | null | undefined, tagName: string) => boolean;
export declare const getConvoTag: (tags: ConvoTag[] | null | undefined, tagName: string) => ConvoTag | undefined;
export declare const getConvoFnMessageByTag: (tag: string, messages: ConvoMessage[] | null | undefined, startIndex?: number) => ConvoMessage | undefined;
export interface FindConvoMessageOptions {
    tag?: string;
    tagValue?: string;
    role?: string;
    startIndex?: number;
}
export declare const findConvoMessage: (messages: ConvoMessage[] | null | undefined, { tag, tagValue, role, startIndex, }: FindConvoMessageOptions) => ConvoMessage | undefined;
export declare const getConvoFnByTag: (tag: string, messages: ConvoMessage[] | null | undefined, startIndex?: number) => ConvoFunction | undefined;
export declare const convoTagsToMap: (tags: ConvoTag[], exe: ConvoExecutionContext) => Record<string, string | undefined>;
export declare const mapToConvoTags: (map: Record<string, string | undefined>) => ConvoTag[];
export declare const getFlatConvoTagValues: (name: string, tags: Record<string, string | undefined> | null | undefined) => string[];
export declare const parseConvoTransformTag: (value: string) => ConvoTag | undefined;
export declare const createConvoMetadataForStatement: (statement: ConvoStatement) => ConvoMetadata;
export declare const getConvoMetadata: (value: any) => ConvoMetadata | undefined;
export declare const getConvoStructPropertyCount: (value: any) => number;
export declare const convoLabeledScopeFnParamsToObj: (scope: ConvoScope, fnParams: ConvoStatement[]) => Record<string, any>;
export declare const convoLabeledScopeParamsToObj: (scope: ConvoScope) => Record<string, any>;
export declare const convoParamsToObj: (scope: ConvoScope, unlabeledMap?: string[], unlabeledKey?: string | boolean, fallbackFnParams?: ConvoStatement[]) => Record<string, any>;
export declare const isReservedConvoRole: (role: string) => boolean;
export declare const isValidConvoRole: (role: string) => boolean;
export declare const isValidConvoIdentifier: (role: string) => boolean;
export declare const formatConvoMessage: (role: string, content: string, prefix?: string) => string;
export interface EscapeConvoMessageContentOptions {
    removeNewLines?: boolean;
}
export declare const escapeConvo: (content: string | null | undefined, isStartOfMessage?: boolean, options?: EscapeConvoMessageContentOptions) => string;
export declare const escapeConvoMessageContent: (content: string | null | undefined, isStartOfMessage?: boolean, options?: EscapeConvoMessageContentOptions) => string;
export declare const spreadConvoArgs: (args: Record<string, any>, format?: boolean) => string;
export declare const defaultConvoPrintFunction: ConvoPrintFunction;
export declare const collapseConvoPipes: (statement: ConvoStatement) => number;
export declare const convoDescriptionToCommentOut: (description: string, tab: string | undefined, out: string[]) => void;
export declare const convoDescriptionToComment: (description: string, tab?: string) => string;
export declare const convoStringToCommentOut: (str: string, tab: string | undefined, out: string[]) => void;
export declare const convoStringToComment: (str: string, tab?: string) => string;
export declare const isValidConvoVarName: (name: string) => boolean;
export declare const isValidConvoFunctionName: (name: string) => boolean;
export declare const isValidConvoTypeName: (typeName: string) => boolean;
export declare const validateConvoVarName: (name: string) => void;
export declare const validateConvoFunctionName: (name: string) => void;
export declare const validateConvoTypeName: (name: string) => void;
export declare const convoUsageTokensToString: (usage: Partial<ConvoTokenUsage>) => string;
export declare const convoPartialUsageTokensToUsage: (usage: Partial<ConvoTokenUsage>) => ConvoTokenUsage;
export declare const parseConvoUsageTokens: (str: string) => ConvoTokenUsage;
export declare const addConvoUsageTokens: (to: Partial<ConvoTokenUsage>, from: Partial<ConvoTokenUsage> | string) => void;
export declare const createEmptyConvoTokenUsage: () => ConvoTokenUsage;
export declare const resetConvoUsageTokens: (usage: ConvoTokenUsage) => void;
export declare const isConvoTokenUsageEmpty: (usage: ConvoTokenUsage) => boolean;
/**
 * The token price used when the input or output token price of a model is unknown. This value is
 * set high to $150 per 1M tokens to avoid losing money.
 */
export declare const unknownConvoTokenPrice: number;
export declare const calculateConvoTokenUsage: (model: string, models: ConvoModelInfo[], inputTokens?: number, outputTokens?: number) => ConvoTokenUsage;
export declare const isConvoJsonMessage: (content: string | null | undefined) => boolean;
/**
 * Parses message content as json if the content is in a json markdown code block
 */
export declare const parseConvoJsonOrStringMessage: (content: string | null | undefined, returnJsonAsString?: boolean) => ParsedContentJsonOrString;
export declare const parseConvoJsonMessage: (json: string, expectArray?: boolean) => any;
export declare const removeDanglingConvoUserMessage: (code: string) => string;
export declare const concatConvoCode: (a: string, b: string) => string;
export declare const concatConvoCodeAndAppendEmptyUserMessage: (a: string, b: string) => string;
export declare const isConvoMessageIncludedInTask: (msg: ConvoMessage, task: string) => boolean;
export declare const parseConvoMessageTemplate: (msg: ConvoMessage, template: string) => ConvoMessageTemplate;
export declare const getConvoStatementSource: (statement: ConvoStatement, code: string) => string;
/**
 * If the value is empty, null or undefined true is returned, otherwise the Boolean
 * constructor is used to parse the value.
 */
export declare const parseConvoBooleanTag: (value: string | null | undefined) => boolean;
export declare const getFlatConvoTagBoolean: (message: FlatConvoMessage | ConvoCompletionMessage | null | undefined, tagName: string) => boolean;
export declare const shouldDisableConvoAutoScroll: (messages: FlatConvoMessage[]) => boolean;
export declare const convoDocRefToTagValue: (doc: ConvoDocumentReference) => string;
export declare const convoRagDocRefToMessage: (flat: FlatConvoConversation, docs: ConvoDocumentReference | null | undefined | (ConvoDocumentReference | null | undefined)[], role: string) => ConvoMessage | undefined;
export declare const escapeConvoTagValue: (value: string) => string;
export declare const convoMessageToStringSafe: (msg: ConvoMessage | null | undefined) => string | undefined;
export declare const convoMessageToString: (msg: ConvoMessage) => string;
export declare const getLastCompletionMessage: (messages: FlatConvoMessage[]) => FlatConvoMessage | undefined;
export declare const isConvoThreadFilterMatch: (filter: ConvoThreadFilter, tid: string | undefined | null) => boolean;
export declare const mergeConvoOptions: (source: ConversationOptions | null | undefined, ...overrides: (ConversationOptions | null | undefined)[]) => ConversationOptions;
export declare const getLastConvoMessageWithRole: <T extends ConvoMessage | FlatConvoMessage>(messages: T[] | undefined | null, role: string) => T | undefined;
export declare const getLastNonCalledConvoFlatMessage: (messages: FlatConvoMessage[]) => FlatConvoMessage | undefined;
export declare const getLastConvoContentMessage: (messages: FlatConvoMessage[]) => FlatConvoMessage | undefined;
export declare const getLastCalledConvoMessage: (messages: ConvoMessage[], startIndex?: number) => ConvoMessage | undefined;
export interface CreateTextConvoCompletionMessageOptions {
    flat: FlatConvoConversationBase;
    role: string;
    content: string | null | undefined;
    model: string;
    models?: ConvoModelInfo[];
    inputTokens?: number;
    outputTokens?: number;
    tokenPrice?: number;
    tags?: Record<string, string | undefined>;
    defaults?: ConvoCompletionMessage;
    streamingId?: string;
}
export declare const createTextConvoCompletionMessage: ({ flat, role, content, model, models, inputTokens, outputTokens, tokenPrice, defaults, tags, streamingId, }: CreateTextConvoCompletionMessageOptions) => ConvoCompletionMessage;
export interface CreateFunctionCallConvoCompletionMessageOptions {
    flat: FlatConvoConversationBase;
    model: string;
    toolId?: string;
    callFn: string;
    callParams: Record<string, any> | undefined;
    models?: ConvoModelInfo[];
    inputTokens?: number;
    outputTokens?: number;
    tokenPrice?: number;
    defaults?: ConvoCompletionMessage;
    streamingId?: string;
}
export declare const createFunctionCallConvoCompletionMessage: ({ flat, model, toolId, callFn, callParams, models, inputTokens, outputTokens, tokenPrice, defaults, streamingId, }: CreateFunctionCallConvoCompletionMessageOptions) => ConvoCompletionMessage;
export declare const getSerializableFlatConvoConversation: (flat: FlatConvoConversation | FlatConvoConversationBase, includeMetadata?: boolean) => FlatConvoConversationBase;
export declare const flatConvoConversationToBase: (flat: FlatConvoConversation | FlatConvoConversationBase) => FlatConvoConversationBase;
export interface NormalizedFlatMessageListOptions {
    /**
     * Disables all processing of messages
     */
    disableAll?: boolean;
    /**
     * If true rag messages will not be added to user message content
     */
    disableRag?: boolean;
    /**
     * If true all system messages should be merged into a single message
     */
    mergeSystemMessages?: boolean;
}
/**
 * Returns the full content of the message including prefix and suffix
 */
export declare const getFullFlatConvoMessageContent: (msg: FlatConvoMessage) => string;
/**
 * Normalizes flat messages before sending to LLMs. This function is typically used by converter.
 */
export declare const getNormalizedFlatMessageList: (flat: FlatConvoConversationBase, options?: NormalizedFlatMessageListOptions) => FlatConvoMessage[];
export declare const formatConvoContentSpace: (content: string) => string;
/**
 * Converts the flat conversation to a string for display purposes. This function does not
 * preserve all of the information of the conversation and should not be used for purposes
 * outside of logging and display. For example all code in define, do and function bodies are
 * lost and not part of the output of this function.
 */
export declare const getFlattenConversationDisplayString: (flat: FlatConvoConversation, includeConsoleHeaderFooter?: boolean) => string;
export interface ConversationSuggestions {
    title?: string;
    suggestions: string[];
    messages: FlatConvoMessage[];
}
export declare const getLastConvoSuggestions: (messages: FlatConvoMessage[]) => ConversationSuggestions | undefined;
export declare const evalConvoTransformCondition: (transformContent: string, condition: string | null | undefined) => boolean;
export declare const getConvoDebugLabelComment: (label: string) => string;
export declare const isConvoModelAliasMatch: (name: string, alias: ConvoModelAlias) => boolean;
export declare const insertSystemMessageIntoFlatConvo: (msg: string, flat: FlatConvoConversation) => void;
export declare const getConvoCompletionServiceModelsAsync: (service: ConvoCompletionService<any, any>, disableCache?: boolean | undefined) => Promise<ConvoModelInfo[]>;
export declare const getConvoMessageModificationAction: (str: string) => ConvoMessageModificationAction | undefined;
/**
 * Appends a value to the prefix of a flat conversation message.
 * If a prefix already exists, the new value is concatenated with optional separation.
 *
 * @param msg - The flat conversation message to modify
 * @param value - The string value to append to the prefix
 * @param sep - Whether to add separator (double newlines) between existing and new content
 */
export declare const appendFlatConvoMessagePrefix: (msg: FlatConvoMessage, value: string, sep?: boolean) => void;
/**
 * Appends a value to the suffix of a flat conversation message.
 * If a suffix already exists, the new value is concatenated with optional separation.
 *
 * @param msg - The flat conversation message to modify
 * @param value - The string value to append to the suffix
 * @param sep - Whether to add separator (double newlines) between existing and new content
 */
export declare const appendFlatConvoMessageSuffix: (msg: FlatConvoMessage, value: string, sep?: boolean) => void;
/**
 * Converts a flat convo message to a completion message
 */
export declare const convertFlatConvoMessageToCompletionMessage: (msg: FlatConvoMessage) => ConvoCompletionMessage;
export declare const getConvoSystemMessage: (type: StandardConvoSystemMessage) => string;
export declare const getFlatConvoMessageCachedJsonValue: (msg: FlatConvoMessage | null | undefined) => any;
export declare const setFlatConvoMessageCachedJsonValue: (msg: FlatConvoMessage | null | undefined, value: any) => any;
export declare const getFlatConvoMessageCondition: (msg: FlatConvoMessage | null | undefined) => ConvoTag;
export declare const setFlatConvoMessageCondition: (msg: FlatConvoMessage | null | undefined, tag: ConvoTag) => void;
/**
 * Converts the messages into static convo lang with all expressions evaluated
 */
export declare const flatConvoMessagesToTextView: (messages: FlatConvoMessage[] | null | undefined) => string;
export declare const getAssumedConvoCompletionValue: (completion: ConvoCompletion) => any;
export declare const insertConvoContentIntoSlot: (content: string, template: string, slotName?: string) => string;
export declare const contentHasConvoRole: (content: string) => boolean;
export declare const defaultConvoImportServicePriority = 0;
export declare const isConvoTypeArray: (value: any) => boolean;
/**
 * Returns the first found reference to the given variable or function
 */
export declare const getConvoMessagesVarReference: (messages: ConvoMessage[], varName: string | string[]) => ConvoStatement | undefined;
/**
 * Returns the first found reference to the given variable or function
 */
export declare const getConvoMessageVarReference: (msg: ConvoMessage, varName: string | string[]) => ConvoStatement | undefined;
/**
 * Returns the first found reference to the given variable or function
 */
export declare const getConvoStatementVarReference: (s: ConvoStatement, varName: string | string[]) => ConvoStatement | undefined;
export declare const isConvoStringTemplateLiteralOptions: (value: any) => value is ConvoStringTemplateLiteralOptions;
export declare const groupConvoMessages: (messages: ConvoMessage[], startIndex?: number) => void;
export interface ConvoImportBase {
    name: string;
    modifiers: string[];
    templateName?: string;
    role?: string;
    assign?: string;
    tag?: string;
}
export declare const parseBaseConvoImport: (name: string) => ConvoImportBase;
export declare const applyConvoImportRange: (content: string, convoImport: ConvoImportBase) => string;
export declare const applyConvoImportTag: (content: string, convoImport: ConvoImportBase, path?: string, gitStatus?: ConvoGitFileStatus, hasRanges?: boolean) => string;
export declare const convoTranscriptionRequestToSupportRequest: (request: ConvoTranscriptionRequest) => ConvoTranscriptionSupportRequest;
export {};
