package com.zioinfo.kintex.auth;

import com.zioinfo.kintex.auth.dto.AcceptInviteRequest;
import com.zioinfo.kintex.auth.dto.LoginRequest;
import com.zioinfo.kintex.auth.dto.LoginResponse;
import com.zioinfo.kintex.auth.dto.MeResponse;
import com.zioinfo.kintex.auth.dto.WorkspaceDto;

import java.util.List;

/** 인증·워크스페이스 서비스 계약. */
public interface AuthService {

    /** 이메일/비밀번호 검증 → JWT 발급 + 참여 행사 목록. */
    LoginResponse login(LoginRequest request);

    /** 현재 사용자 신원 + 프로필(email·phone·deptId·photoUrl) 순증. 웹/모바일 부트스트랩. */
    MeResponse me(KintexPrincipal principal);

    /** 현재 사용자의 참여 행사 워크스페이스 목록(SCR-01 카드 그리드). */
    List<WorkspaceDto> listWorkspaces(KintexPrincipal principal);

    /**
     * 초대 코드 수락. 장치업체 수락 시 킨텍스 등록업체 검증(미등록 차단).
     * @return 갱신된 로그인 응답(역할이 추가된 새 토큰 포함).
     */
    LoginResponse acceptInvite(KintexPrincipal principal, AcceptInviteRequest request);
}
