# This file has been generated - DO NOT MODIFY
# API Version : {{api_version}}

from typing import Protocol, runtime_checkable
import pandas as pd
from pydantic import ConfigDict
{{generated_code}}

@runtime_checkable
class Processor(Protocol):
    def preprocess(self, df: pd.DataFrame) -> pd.DataFrame:
        ...

    def postprocess(self, source: pd.DataFrame, dest: pd.DataFrame) -> pd.DataFrame:
        ...


class AvatarizationPipelineCreate(BaseModel):
    model_config = ConfigDict(arbitrary_types_allowed=True)

    avatarization_job_create: AvatarizationJobCreate
    processors: List[Processor] = []
    df: pd.DataFrame


class AvatarizationPipelineResult(BaseModel):
    model_config = ConfigDict(arbitrary_types_allowed=True)

    privacy_metrics: PrivacyMetrics
    signal_metrics: SignalMetrics
    post_processed_avatars: pd.DataFrame
    avatarization_job_id: UUID
    signal_job_id: UUID
    privacy_job_id: UUID
