package com.usky.vpp.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.vpp.domain.VppDrEvent;
import com.usky.vpp.domain.VppDrEvaluation;
import com.usky.vpp.domain.VppDrStrategy;
import com.usky.vpp.service.vo.DrClearingRequest;
import com.usky.vpp.service.vo.DrEventDetailVO;
import com.usky.vpp.service.vo.DrEventRequest;
import com.usky.vpp.service.vo.DrEventStatusRequest;
import com.usky.vpp.service.vo.DrInterveneRequest;
import com.usky.vpp.service.vo.DrParticipateRequest;
import com.usky.vpp.service.vo.DrStrategyRequest;
import com.usky.vpp.service.vo.DrStrategyVO;

import java.util.Map;

/**
 * 需求响应业务接口
 */
public interface VppDrService {

    CommonPage<VppDrEvent> pageEvent(Map<String, Object> params);

    DrEventDetailVO getEvent(Long id);

    VppDrEvent createEvent(DrEventRequest request);

    void updateEvent(Long id, DrEventRequest request);

    /**
     * 修改事件状态（独立接口，不走编辑事件）。校验租户后仅允许 0待参与 → 1已申报。
     */
    void updateEventStatus(DrEventStatusRequest request);

    void deleteEvent(Long id);

    Object assessCapability(Long eventId);

    void participate(Long eventId, DrParticipateRequest request);

    void clearing(Long eventId, DrClearingRequest request);

    Object monitorExecution(Long eventId);

    void intervene(Long eventId, DrInterveneRequest request);

    void completeEvent(Long eventId);

    void acknowledgeClearing(Long eventId);

    VppDrEvaluation getEvaluation(Long eventId);

    CommonPage<VppDrStrategy> pageStrategy(Map<String, Object> params);

    DrStrategyVO getStrategy(Long id);

    VppDrStrategy createStrategy(DrStrategyRequest request);

    void updateStrategy(Long id, DrStrategyRequest request);

    void deleteStrategy(Long id);
}