import { Assistant, BaseAssistant, ClaudeAsst, GeminiAsst, OpenAILegacyAsst } from "@elimeleth/vct-assistants";
import { Workflow } from ".";
import { Context, GlobalRouterArgs } from "..";
import { ProviderClass } from "../io/providerClass";
export declare class GlobalRouter<TFlows extends Workflow<string>[], TProvider extends Partial<ProviderClass>> {
    private args;
    private parentNodes;
    private state;
    private checkpointer;
    private messageQueues;
    private processingFlags;
    private messages;
    private port;
    private host;
    private hub_setup;
    private abortController;
    private model;
    assistant: Assistant | BaseAssistant | ClaudeAsst | GeminiAsst | OpenAILegacyAsst;
    /**
 * Constructs an instance of the class.
 *
 * @param args - Partial arguments for GlobalRouterArgs.
 */
    constructor(args: Partial<GlobalRouterArgs<TProvider>>);
    private send_message_to_hub;
    private send_connection_to_hub;
    private send_healthcheck_config;
    private listenerBusEvents;
    private setState;
    /**
 * Initializes the provider and sets up event listeners.
 *
 * This method performs the following steps:
 * 1. Initializes the provider with the specified port and options.
 * 2. Sets up event listeners from the listener bus events.
 * 3. When the provider is ready, loads all checkpoints and optionally restores previous checkpoints.
 *
 * @returns {Promise<void>} A promise that resolves when the setup is complete.
 */
    listen(): Promise<void>;
    /**
 * Adds the given parent nodes to the workflow, ensuring that each node has a unique name.
 *
 * @param {Workflow[]} parentNodes - An array of Workflow objects to be added as parent nodes.
 * @returns {this} The current instance of the class, allowing for method chaining.
 * @throws {Error} If a node with the same name already exists in the parent nodes.
 */
    addFlows<NewFlows extends Workflow<string>[]>(parentNodes: NewFlows): GlobalRouter<[...TFlows, ...NewFlows], TProvider>;
    /**
     * Routes the trigger to the appropriate workflow node based on the provided context.
     *
     * @param {string} trigger - The trigger string to match against nodes.
     * @param {Context} ctx - The context in which the trigger is being evaluated.
     * @returns {Workflow | null} - The matched workflow node or null if no match is found.
     */
    routeTrigger(trigger: string, ctx: Context): Workflow<string> | null;
    private captureIntention;
    private enqueueMessage;
    private containsMedia;
    private isPaused;
    private circuitBreaker;
    private handleMedia;
    private captureParentIntention;
    private executeNode;
    private processQueue;
    private matchTrigger;
    private matchArrayKeys;
    private matchNonStringKey;
    private matchKeys;
}
