package com.yaoai.pipeline.service;

import com.yaoai.domain.entity.Character;
import com.yaoai.domain.entity.CharacterState;
import com.yaoai.domain.entity.Scene;

import java.io.InputStream;
import java.util.List;

public interface AssetGenPipelineService {

    List<Character> extractCharacters(Long projectId, Long tenantId);

    List<Scene> extractScenes(Long projectId, Long tenantId);

    /** Generate three standardized character turnaround views: front, side, and back. */
    Character generateCharacterImage(Long characterId, Long tenantId);

    Scene generateSceneImage(Long sceneId, Long tenantId);

    List<Character> listCharacters(Long projectId, Long tenantId);

    List<CharacterState> listCharacterStates(Long projectId, Long tenantId);

    List<CharacterState> listCharacterStates(Long projectId, Long characterId, Long tenantId);

    List<Scene> listScenes(Long projectId, Long tenantId);

    Character saveCharacter(Character character);

    CharacterState saveCharacterState(Long projectId, Long characterId, Long tenantId, CharacterState state);

    CharacterState generateCharacterStateImage(Long projectId, Long characterId, Long stateId, Long tenantId);

    Scene saveScene(Scene scene);

    void deleteCharacter(Long id, Long tenantId);

    void deleteCharacterState(Long projectId, Long characterId, Long id, Long tenantId);

    void deleteScene(Long id, Long tenantId);

    Character uploadCharacterImage(Long characterId, Long tenantId, String viewType,
                                   InputStream stream, long size, String contentType, String ext);

    Scene uploadSceneImage(Long sceneId, Long tenantId, InputStream stream, long size, String contentType, String ext);
}
