Harshdhsvguyt's picture
Initial clean commit
acdef23
from abc import ABC, abstractmethod
from typing import List, Optional
from PIL import Image
class ImageProviderBase(ABC):
"""
Abstract base class for image generation providers.
All providers must implement the generate method.
"""
@abstractmethod
def generate(
self,
prompt: str,
negative_prompt: str = "",
n_images: int = 1,
**kwargs
) -> List[Image.Image]:
"""
Generate images based on prompt.
Args:
prompt: Main generation prompt
negative_prompt: Things to avoid in generation
n_images: Number of images to generate
**kwargs: Provider-specific parameters
Returns:
List of PIL Image objects
"""
pass
class VideoProviderBase(ABC):
"""
Abstract base class for video generation providers.
"""
@abstractmethod
def generate(
self,
prompt: str,
duration: int = 10,
fps: int = 30,
**kwargs
) -> str:
"""
Generate video based on prompt.
Args:
prompt: Video generation prompt
duration: Video duration in seconds
fps: Frames per second
**kwargs: Provider-specific parameters
Returns:
Path to generated video file
"""
pass
class Model3DProviderBase(ABC):
"""
Abstract base class for 3D model generation providers.
"""
@abstractmethod
def generate(
self,
prompt: str,
export_format: str = "obj",
**kwargs
) -> str:
"""
Generate 3D model based on prompt.
Args:
prompt: 3D asset generation prompt
export_format: Export format (obj, fbx, gltf, etc.)
**kwargs: Provider-specific parameters
Returns:
Path to generated 3D model file
"""
pass