import { IAgentRuntime, Service, type Memory, type UUID } from '@elizaos/core';
import type { Form, FormStatus, FormTemplate, FormUpdateResult } from '../types';
/**
 * FormsService manages form lifecycle and state.
 * It provides methods to create, update, list, and cancel forms.
 */
export declare class FormsService extends Service {
    static serviceName: string;
    static serviceType: string;
    private forms;
    private templates;
    private persistenceTimer?;
    private cleanupTimer?;
    private tablesChecked;
    private tablesExist;
    capabilityDescription: string;
    constructor(runtime: IAgentRuntime);
    static start(runtime: IAgentRuntime): Promise<FormsService>;
    initialize(_runtime: IAgentRuntime): Promise<void>;
    private registerDefaultTemplates;
    /**
     * Force immediate persistence of all forms
     * Uses batch transaction for efficiency and safety
     */
    forcePersist(): Promise<void>;
    /**
     * Wait for database tables to be available
     * This can be called by plugins that depend on forms persistence
     */
    waitForTables(maxAttempts?: number, delayMs?: number): Promise<boolean>;
    /**
     * Check if persistence is available
     */
    isPersistenceAvailable(): boolean;
    /**
     * Create a new form from a template or custom definition
     */
    createForm(templateOrForm: string | Partial<Form>, metadata?: Record<string, unknown>): Promise<Form>;
    /**
     * Update form with extracted values from user message
     */
    updateForm(formId: UUID, message: Memory): Promise<FormUpdateResult>;
    /**
     * Extract form values from text using LLM
     */
    private extractFormValues;
    /**
     * List all forms
     */
    listForms(status?: FormStatus): Promise<Form[]>;
    /**
     * Get a specific form
     */
    getForm(formId: UUID): Promise<Form | null>;
    /**
     * Cancel a form
     */
    cancelForm(formId: UUID): Promise<boolean>;
    /**
     * Register a form template
     */
    registerTemplate(template: FormTemplate): void;
    /**
     * Get all registered templates
     */
    getTemplates(): FormTemplate[];
    /**
     * Clean up old completed/cancelled forms
     */
    cleanup(olderThanMs?: number): Promise<number>;
    stop(): Promise<void>;
    private checkDatabaseTables;
    private persistFormsBatch;
    private persistFormsIndividual;
    private persistForms;
    private restorePersistedForms;
    private validateAndSanitizeFormData;
    private validateAndSanitizeFieldData;
    private parseFieldValue;
    private validateFieldValue;
    private _serializeForm;
    private _deserializeForm;
    private cleanupOldForms;
}
