import { type Clip, type VoiceOption } from '../../core/models';
export interface ClipConfigPanelTheme {
    backgroundColor: string;
    borderColor: string;
    textColor: string;
    labelColor: string;
    inputBackground: string;
    inputBorder: string;
    inputFocusBorder: string;
    buttonBackground: string;
    buttonBorder: string;
    buttonActiveBackground: string;
    buttonActiveBorder: string;
    buttonActiveText: string;
}
export declare const defaultDarkTheme: ClipConfigPanelTheme;
export interface ClipConfigPanelConfig {
    container: HTMLElement;
    theme?: ClipConfigPanelTheme;
    voiceCatalog?: VoiceOption[];
    onClipUpdate?: (clipId: string, updates: Partial<Clip>) => void;
    onGenerateVoice?: (clip: Clip, voice: VoiceOption, followTextUpdates: boolean) => Promise<void>;
}
export declare const CSS_CLASSES: {
    readonly container: "clip-config-panel";
    readonly tabBar: "clip-config-tab-bar";
    readonly tabButton: "clip-config-tab-button";
    readonly content: "clip-config-content";
    readonly visualPanel: "clip-config-visual-panel";
    readonly audioPanel: "clip-config-audio-panel";
    readonly textPanel: "clip-config-text-panel";
    readonly voicePanel: "clip-config-voice-panel";
    readonly actionBar: "clip-config-action-bar";
    readonly section: "clip-config-section";
    readonly sectionTitle: "clip-config-section-title";
    readonly row: "clip-config-row";
    readonly label: "clip-config-label";
    readonly slider: "clip-config-slider";
    readonly input: "clip-config-input";
    readonly textarea: "clip-config-textarea";
    readonly colorInput: "clip-config-color-input";
    readonly presetGrid: "clip-config-preset-grid";
    readonly presetButton: "clip-config-preset-button";
    readonly resetButton: "clip-config-reset-button";
    readonly emptyState: "clip-config-empty-state";
    readonly filterGroup: "clip-config-filter-group";
    readonly filterButton: "clip-config-filter-button";
    readonly voiceCardGrid: "clip-config-voice-grid";
    readonly voiceCard: "clip-config-voice-card";
    readonly voiceCardAvatar: "clip-config-voice-avatar";
    readonly voiceCardMeta: "clip-config-voice-meta";
    readonly voiceCardTitle: "clip-config-voice-title";
    readonly voiceCardSubtitle: "clip-config-voice-subtitle";
    readonly voiceCardCheck: "clip-config-voice-check";
    readonly voiceCardPreviewBadge: "clip-config-voice-preview-badge";
    readonly voiceCardAvatarWrap: "clip-config-voice-avatar-wrap";
    readonly voiceCardAvatarWrapFirstRow: "clip-config-voice-avatar-wrap--first-row";
    readonly voiceCardAvatarTooltip: "clip-config-voice-avatar-tooltip";
    readonly voiceCardAvatarMask: "clip-config-voice-avatar-mask";
    readonly voiceCardAvatarSpeaker: "clip-config-voice-avatar-speaker";
    readonly voiceCheckbox: "clip-config-voice-checkbox";
    readonly primaryButton: "clip-config-primary-button";
    readonly errorText: "clip-config-error-text";
    readonly voiceLoadingOverlay: "clip-config-voice-loading-overlay";
    readonly voiceLoadingCard: "clip-config-voice-loading-card";
    readonly voiceLoadingIcon: "clip-config-voice-loading-icon";
    readonly voiceLoadingText: "clip-config-voice-loading-text";
};
export declare class ClipConfigPanel {
    private readonly container;
    private readonly theme;
    private readonly renderer;
    private readonly onClipUpdate?;
    private readonly onGenerateVoice?;
    private readonly voiceCatalog;
    private currentClip;
    private activeTab;
    private readonly iconCache;
    private pendingPreferredTab;
    private selectedVoiceId;
    private activeVoiceFilterTag;
    private textDraftContent;
    private followTextUpdates;
    private voiceLoadingBusyCount;
    private isVoiceLoadingOverlayRendered;
    private isVoiceLoadingOverlayExiting;
    private voiceLoadingOverlayHideTimer;
    private voiceErrorMessage;
    private voicePreviewAudio;
    private previewingVoiceId;
    constructor(config: ClipConfigPanelConfig);
    setClip(clip: Clip | null): void;
    setPreferredTab(tab: 'voice' | null): void;
    setVoiceGenerationBusy(isBusy: boolean): void;
    destroy(): void;
    private render;
    private getAvailableTabs;
    private resetVoiceState;
    private syncVoiceStateForClip;
    private syncActiveTab;
    private supportsVoicePanel;
    private ensureVoiceFilters;
    private handleVoiceFilterChange;
    private handleVoiceSelect;
    private handleVoiceFollowTextUpdatesChange;
    private handleGenerateVoice;
    private handleVolumeChange;
    private clampValue;
    private handleTransformChange;
    private handleTransformChanges;
    private stopVoicePreview;
    private readonly handleVoicePreviewEnded;
    private playVoicePreview;
    private handleTextContentInput;
    private handleTextContentCommit;
    private handleTextStyleChange;
}
