import { CSSResult } from 'lit'; import { LitElement } from 'lit'; import { TemplateResult } from 'lit-html'; export declare const applyValuesGlobal: (values: { [key: string]: string | number | boolean | string[] | undefined; }, fieldsMeta?: FieldDescriptor[]) => void; export declare interface FieldDescriptor { formIndex?: number; name: string; label?: string; ariaLabel?: string; type: string; placeholder?: string; required?: boolean; isPrivate?: boolean; explicitLabel?: string; options?: { value: string; label: string; name?: string; }[]; value?: string | number | boolean | string[] | undefined; element?: HTMLElement; tagName?: string; step?: string; min?: string; max?: string; pattern?: string; classList?: string[]; role?: string | null; ariaHaspopup?: string | null; ariaControls?: string | null; hasDatalist?: boolean; listId?: string | null; group?: string; } export declare class FormScanner { private form; constructor(form: HTMLFormElement); private collectPotentialElements; private hasProcessedParent; /** Check if element should be filtered out (already processed, hidden, disabled, etc.). */ private shouldFilterOut; /** Check if element is a custom component (non-native tag with input-like name). */ private static isCustomComponent; private filterInteractiveElements; /** Extract placeholder from element (native or attribute). */ private static getPlaceholder; /** Types that should not have explicit label. */ private static readonly NO_EXPLICIT_LABEL_TYPES; private extractFieldMeta; private buildRadioDescriptor; private buildCheckboxGroupDescriptor; /** Check if an explicit key has already been processed (non-radio/checkbox). */ private static isExplicitDuplicate; /** Scan context shared across handler methods. */ private ctx; /** Check and track composite key duplicates for non-radio/checkbox fields. */ private checkCompositeKeyDuplicate; private shouldSkipDuplicate; /** Handle radio type fields. */ private handleRadio; /** Handle checkbox type fields. */ private handleCheckbox; /** Handle select type fields. */ private handleSelect; /** Enrich descriptors with structural metadata. */ private enrichDescriptors; /** Check if an element should be skipped during the scan loop. */ private shouldSkipElement; /** Check if a radio/checkbox name was already encountered. */ private isAlreadyEncounteredGroupType; /** Dispatch element to the appropriate type handler. */ private dispatchElement; scan(): FieldDescriptor[]; } export declare class TypelessForm extends LitElement { protected willUpdate(changedProps: Map): void; static styles: CSSResult[]; private static readonly WIDGET_VERSION; private _scanner; private _audio; private _position; private _viewState; private _llm; private _filler; private DEBUG_SKIP_TO_SUCCESS; private widgetPosition; private smartZIndex; private userConfigApplied; private autoPositionDisabled; private safeInsets; private formsIntersectionObserver; private formVisibilityObserver; private isAnyFormVisible10; private visibleForms; private hasEverBeenVisibleOnThisPage; private userClosedManually; private lastClosedOnForm; private obstructionsObserver; private showDelay; private initialShowTimer; private isApplyingValues; private lastAppliedKey; private lastApplyAt; private currentStabilizerSession; _formVisibilityFallback: (() => void) | null; constructor(); private viewState; private progressStage; private processingStage; get showModal(): boolean; get showLoadingModal(): boolean; private showConsentModal; private currentStep; private _transcribedText; private _isRecording; private fieldsDetected; private isLoading; private errorMessage; private errorDetails; private recordingDuration; private recordingStartTime; private maxRecordingTimer; private recordingDurationTimer; private lastLLMResponse; private focusedForm; private scannedFields; private hideWidget; private noFormsMessage; private currentLang; private highlightedForm; private cachedSafeBadges; private expandedSections; private consentExpandedSections; private consentCheckboxMain; private consentCheckboxAge; private _cachedFieldStatuses; private _lastLLMResponseForCache; private apiKey; private llmClient; private translationService; private globalFocusHandler; private audioRecorder; private mediaRecorder; private pendingGenerateSafeBadges; private lastProcessedFieldsHash; private languageCache; private safeBadgesCache; private fieldElementsMap; private audioChunks; private isMicrophonePermissionGranted; private mutationObserver; private detectedLanguage; private originalUserText; private formValueApplier; private formFieldDetector; private privacyChecker; private formLanguageDetector; private rawUserInput; private scrollHandler; private resizeHandler; private languageDetectionTimeout; private isDetectingLanguage; private safeFieldNames; private renderlessModal; private currentFormId; private initAbortController; private progressTimer; private processingTimer; private isSubmittingConsent; private showPrivacySettings; private isDeletingData; private deleteDataSuccess; private deleteDataError; private deleteConfirmChecked; private scannedForms; private filterMap; private lastTranscriptLanguage; private lastApplyTimestamp; private obstructionResizeObserver; private trackedObstructionNodes; private obstructionNodesUpdateInterval; private orientationChangeHandler; private navigationHandler; private navigationCleanup; private navigationRetryTimers; private proactiveCheckInterval; private userEditListener; private userEditListenerForm; private userIsEditingFields; private __initAnalyzeV2; private __pendingCommitCheck; private __commitSyncScheduled; checkAndReapplyIfNeeded(): void; startProactiveValueCheck(_windowMs?: number): void; private isLocalEnvironment; get isProduction(): boolean; private shouldInitialize; connectedCallback(): Promise; /** * Inject Plus Jakarta Sans font only if the developer opts in via `load-fonts` attribute. * Without opt-in, the widget uses a system font stack (no external requests). * Fonts are self-hosted on Firebase Hosting to avoid GDPR issues * (Google Fonts sends visitor IPs to Google servers) and CSP breakage. */ private _injectFontIfOptedIn; disconnectedCallback(): void; private throttle; private debouncedLanguageDetection; private updateActiveForm; private checkUserConfiguration; private findSafePosition; private calculateSmartZIndex; private injectGlobalStyles; updated(changedProperties: Map): void; firstUpdated(): void; private initializeI18n; private t; private getTotalFormsCount; private getFormIndex; private getFormsStatistics; private initializeRenderlessModal; private getFormFillRatio; private getElementVisibilityRatio; private isFormFilled; private selectActiveForm; private getFieldsForDisplay; private findBestCandidateForm; private getFormTitle; private getFormLanguage; private scanAllForms; private _noFormsHideTimer; private evaluateWidgetVisibility; private getCurrentVisibleForm; private updateFormHighlight; private clearFormHighlight; private handleFloatingButtonClick; private closeModal; private handleUserCloseModal; private resetToInitial; private clearDOMElements; private createDetailedError; private requestMicrophonePermission; private handleStartListening; private handleStopListening; private handleRecordingStop; private sendTextToLLM; private handleFillForm; private generateSafeBadges; private performGenerateSafeBadges; private hydrateFromInitData; private requestInitAnalyzeV2; private withTimeout; private showLoading; private applyValuesToSingleForm; private selectBestDateTimeFormat; private getDisplayValueForField; private toggleConsentSection; private toggleConsentCheckboxMain; private toggleConsentCheckboxAge; private handleAcceptConsent; private handleDeclineConsent; private handleShowPrivacySettings; private handleClosePrivacySettings; private handleDeleteData; private toggleDeleteConfirm; render(): TemplateResult<1>; } /** * Widget version — synced with package.json version */ export declare const WIDGET_VERSION = "1.0.0-beta.1"; export { }