/**
 * EMS Editor SDK - Simple and Reliable
 * Handles communication between external apps and iframe editor
 */
export interface EMSEditorConfig {
    serverUrl: string;
    sessionId?: string;
}
export interface WebSocketMessage {
    type: string;
    payload: any;
    sessionId?: string;
}
export interface AssetInfo {
    id: string | number;
    name: string;
    type: 'video' | 'audio' | 'image';
    fileUrl: string;
    proxyUrl?: string;
    width?: number;
    height?: number;
    duration?: number;
    mamAssetId?: string | number;
}
export interface ImportFromAssetsResult {
    success: boolean;
    templateId: string;
    workspaceId: string;
    templateName: string;
    tracksCount: number;
    elementsCount: number;
    timestamp: string;
    error?: string;
}
export declare class EMSEditor {
    private config;
    private ws;
    private sessionId;
    private connected;
    private ready;
    private eventListeners;
    private iframe;
    constructor(config: EMSEditorConfig);
    private connect;
    private registerSession;
    private handleMessage;
    /**
     * Set iframe reference for the editor
     */
    setIframe(iframe: HTMLIFrameElement): void;
    /**
     * Login to MAM system
     */
    loginToMAM(mamConfig: any): Promise<void>;
    /**
     * Logout from MAM system
     */
    logoutFromMAM(): Promise<void>;
    /**
     * Set theme (light or dark)
     */
    setTheme(theme: 'light' | 'dark'): Promise<void>;
    /**
     * Update theme with preset theme ID or custom theme object
     */
    updateTheme(themeId?: string, customTheme?: any): Promise<void>;
    /**
     * Customize theme with primary, secondary, background colors
     */
    customizeTheme(themeConfig: {
        primary?: string;
        secondary?: string;
        background?: string;
        accent?: string;
    }): Promise<void>;
    /**
     * Generate color palette from base color
     */
    private generateColorPalette;
    /**
     * Adjust color lightness
     */
    private adjustColor;
    /**
     * Import template
     */
    importTemplate(templateData: any): Promise<ImportFromAssetsResult>;
    /**
     * Import template from assets array - Auto-generates template with video/audio track separation
     */
    importFromAssets(assets: AssetInfo[], options?: {
        name?: string;
        description?: string;
        width?: number;
        height?: number;
        fps?: number;
        backgroundColor?: string;
    }): Promise<ImportFromAssetsResult>;
    /**
     * Generate tracks from assets with proper video/audio separation
     */
    private generateTracksFromAssets;
    /**
     * Find existing track or create new one
     */
    private findOrCreateTrack;
    /**
     * Create video element with linking
     */
    private createVideoElement;
    /**
     * Create audio element with linking
     */
    private createAudioElement;
    /**
     * Create audio-only element
     */
    private createAudioOnlyElement;
    /**
     * Create image element
     */
    private createImageElement;
    /**
     * Calculate transform for asset positioning
     */
    private calculateTransform;
    /**
     * Generate UUID
     */
    private generateUUID;
    /**
     * Generate element ID
     */
    private generateElementId;
    /**
     * Start render process
     */
    startRender(renderOptions: any): Promise<void>;
    /**
     * Clear all workspaces/tabs in the editor
     */
    clearWorkspaces(): Promise<void>;
    /**
     * Get list of all open workspaces in the editor
     */
    getWorkspacesList(): Promise<any[]>;
    /**
     * MAM Upload Event Handlers
     */
    /**
     * Track MAM upload progress for a specific job
     */
    trackMAMUpload(jobId: string, callbacks?: {
        onProgress?: (progress: any) => void;
        onStageChange?: (stage: string, data: any) => void;
        onComplete?: (result: any) => void;
        onError?: (error: string) => void;
    }): {
        trackingId: string;
        stop: () => void;
    };
    /**
     * Start render with MAM upload tracking
     */
    startRenderWithMAMUpload(renderOptions: any, mamUploadCallbacks?: {
        onProgress?: (progress: any) => void;
        onStageChange?: (stage: string, data: any) => void;
        onComplete?: (result: any) => void;
        onError?: (error: string) => void;
    }): Promise<{
        jobId?: string;
        tracker: {
            trackingId: string;
            stop: () => void;
        };
    }>;
    isConnected(): boolean;
    isReady(): boolean;
    getSessionId(): string;
    on(event: string, listener: Function): void;
    off(event: string, listener: Function): void;
    once(event: string, listener: Function): void;
    private emit;
    private sendMessage;
    /**
     * Disconnect and cleanup
     */
    destroy(): void;
}
export default EMSEditor;
