@@ -472,14 +472,24 @@ def request_key(self) -> str:
472472
473473
474474@dataclass
475- class IFluxKontext :
475+ class IFluxKontext ( SerializableMixin ) :
476476 guidanceEndStep : Optional [int ] = None
477477 guidanceEndStepPercentage : Optional [float ] = None
478478
479+ @property
480+ def request_key (self ) -> str :
481+ return "fluxKontext"
482+
479483
480484@dataclass
481- class IAdvancedFeatures :
485+ class IAdvancedFeatures ( SerializableMixin ) :
482486 fluxKontext : Optional [IFluxKontext ] = None
487+ layerDiffuse : Optional [bool ] = None
488+ hiresfix : Optional [bool ] = None
489+
490+ @property
491+ def request_key (self ) -> str :
492+ return "advancedFeatures"
483493
484494
485495@dataclass
@@ -495,6 +505,20 @@ def request_key(self) -> str:
495505
496506VideoAdvancedFeatureTypes = IWanAnimate
497507
508+ @dataclass
509+ class IWatermark (SerializableMixin ):
510+ text : Optional [str ] = None
511+ image : Optional [str ] = None
512+ displayPosition : Optional [str ] = None
513+ tiled : Optional [bool ] = None
514+ opacity : Optional [float ] = None
515+ fontColor : Optional [str ] = None
516+ bgColor : Optional [str ] = None
517+
518+ @property
519+ def request_key (self ) -> str :
520+ return "watermark"
521+
498522
499523@dataclass
500524class IVideoAdvancedFeatures (SerializableMixin ):
@@ -505,20 +529,23 @@ class IVideoAdvancedFeatures(SerializableMixin):
505529 audioNegativePrompt : Optional [str ] = None
506530 slgLayer : Optional [int ] = None
507531 advancedFeature : Optional [VideoAdvancedFeatureTypes ] = None
532+ watermark : Optional [IWatermark ] = None
508533
509534 @property
510535 def request_key (self ) -> str :
511536 return "advancedFeatures"
512537
513538 def serialize (self ) -> Dict [str , Any ]:
514- result = {k : v for k , v in asdict (self ).items ()
515- if v is not None and not k .startswith ('_' )}
516-
517-
518- if self .advancedFeature :
519- result .pop ('advancedFeature' , None )
520- result .update (self .advancedFeature .to_request_dict ())
521-
539+ result : Dict [str , Any ] = {}
540+ for k , v in vars (self ).items ():
541+ if v is None or k .startswith ("_" ):
542+ continue
543+ if isinstance (v , SerializableMixin ):
544+ result .update (v .to_request_dict ())
545+ elif isinstance (v , (list , tuple )) and v and all (isinstance (x , SerializableMixin ) for x in v ):
546+ result [k ] = [x .serialize () for x in v ]
547+ else :
548+ result [k ] = v
522549 return result
523550
524551
0 commit comments