export interface Asset { id: string; filename: string; url: string; mimeType: string; size: number; width?: number; height?: number; caption?: string; altText?: string; createdAt: string; updatedAt: string; } export interface SavedVoice { id: string; userId: string; voiceId: string; name: string; category?: string; accent?: string; age?: string; description?: string; previewUrl?: string; labels?: Record; createdAt: string; updatedAt: string; } export interface NarrationGenerationResult { assetId: string; fileName: string; mimeType: string; sizeBytes: number; message: string; } /** * List all uploaded image assets. * Use these asset IDs for image blocks and course banners. * * @returns Array of assets with metadata * @example * const assets = await listAssets(); * assets.forEach(a => console.log(`${a.filename}: ${a.width}x${a.height}`)); */ export declare function listAssets(): Promise; /** * Get detailed metadata about a specific asset. * * @param assetId - Asset ID * @returns Asset object with metadata * @example * const asset = await getAsset('asset_abc123'); * console.log(`Image URL: ${asset.url}`); */ export declare function getAsset(assetId: string): Promise; /** * Delete an asset if it is not referenced by any blocks or course banners. * * @param assetId - Asset ID * @example * await deleteAsset('asset_123'); */ export declare function deleteAsset(assetId: string): Promise; /** * Update asset caption and alt text metadata. * * @param assetId - Asset ID * @param metadata - Caption and/or alt text to update * @returns Updated asset * @example * await updateAssetMetadata('asset_123', { * caption: 'Safety equipment diagram', * altText: 'Diagram showing proper safety gear' * }); */ export declare function updateAssetMetadata(assetId: string, metadata: { caption?: string; altText?: string; }): Promise; /** * Create an asset by downloading an image from an external URL. * The image is downloaded and saved to the asset library. * * @param url - URL of the image to download * @param altText - Alt text description for accessibility * @returns Created asset with ID * @example * const asset = await createAssetFromUrl( * 'https://images.unsplash.com/photo-123456789', * 'Workplace safety equipment' * ); * // Use asset.id in image blocks or as course banner */ export declare function createAssetFromUrl(url: string, altText: string): Promise; /** * Alias for createAssetFromUrl for agents that expect uploadFromUrl. */ export declare function uploadFromUrl(url: string, altText: string): Promise; /** * Generate an image using AI (DALL-E) and save it to the asset library. * Requires API key with AI generation permission and OpenAI key configured. * * @param prompt - Description of the image to generate (max 4000 characters) * @returns Generated asset with ID * @example * const asset = await generateAIImage( * 'Professional illustration of workplace safety training, modern style, clean lines' * ); * // Use asset.id in image blocks */ export declare function generateAIImage(prompt: string): Promise; /** * List saved ElevenLabs voices added in Settings > Voices. * * @returns Array of saved voices (voiceId, name, metadata) * @example * const voices = await getSavedVoices(); * const preferred = voices.find(v => v.name.includes('Narrator')); */ export declare function getSavedVoices(): Promise<{ voices: SavedVoice[]; }>; /** * Generate narration audio using ElevenLabs and save it as an asset. * Requires an ElevenLabs API key saved in the user's settings. * * @param text - Plain text or SSML () to convert (max 5000 characters) * @param voiceId - Optional ElevenLabs voice ID; defaults to the configured voice if omitted * @returns Created audio asset info (assetId, filename, mime type, size) * @example * const narration = await generateAINarration( * 'Welcome to the course! This lesson covers fire safety basics.', * 'pNInz6obpgDQGcFmaJgB' * ); * console.log('Narration asset ID:', narration.assetId); */ export declare function generateAINarration(text: string, voiceId?: string): Promise; /** * Replace an existing asset's file in-place (asset ID preserved) using a downloadable file URL. * * @param assetId - Asset ID to replace * @param fileUrl - Public URL of the replacement file (image or audio) * @returns Updated asset metadata * @example * await replaceAssetFile('asset_123', 'https://example.com/new-image.png'); */ export declare function replaceAssetFile(assetId: string, fileUrl: string): Promise; //# sourceMappingURL=assets.d.ts.map