package com.usky.vpp.service;

import com.usky.vpp.domain.VppDrParticipation;

import java.util.List;
import java.util.Map;

/**
 * DN 主动调用 UN（Poll、注册、申报、出清确认）
 */
public interface VppUnIntegrationService {

    Map<String, Object> refreshToken();

    /** 从数据库加载已持久化的 registrationID（配置未设置时） */
    void loadPersistedRegistrationId();

    Map<String, Object> register();

    Map<String, Object> pollOnce();

    Map<String, Object> submitParticipation(Long eventId, boolean participate);

    /**
     * 提交参与申报；{@code participations} 非空时直接使用（避免同事务内刚插入记录查不到）。
     */
    Map<String, Object> submitParticipation(Long eventId, boolean participate, List<VppDrParticipation> participations);

    Map<String, Object> submitClearing(Long eventId);

    Map<String, Object> acknowledgeClearing(Long eventId);

    void handlePollResponse(Map<String, Object> response);
}
