using System;
using System.Data;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using SystemX.Net.BaseProtocol;
using SystemX.Net.XAdaptor;
using static SystemX.Net.XAdaptor.PC.XAdaptorPC;

namespace SystemX.Net.XAdaptor.PC
{
    public interface IUIM
    {
        /*
         *  UNIQUE INFO METHOD(MAC ADDRESS)
        */

        //발행된 아이디 인지
        eResultCheck CheckIssuedID(string strProductID);

        //맥 어드레스 무결성 체크
        eMacAddressType IsMacAddressForm(string strMacAddress);

        //목록에 존재하는 맥어드레스 인지
        bool CheckListMacAddress(string strMacAddress);

        //발행된 맥어드레스 인지
        eResultCheck CheckIssuedMacAddress(string strMacAddress);

        //현재 발행 예정 대상 주소
        string GetToBeIssuedMacAddress(eMacAddressType type = eMacAddressType.Normal);

        //총개수
        int GetTotalAddressNumber();

        //발행 개수 확인
        int GetCurrentIssuedAddressNumber();

        //남은 개수 확인
        int GetRemainAddressNumber();

        string LookUpIDbyMacAddress(string strMacAddress);

        string LookUpMacAddressbyID(ref string strProductID, eLookUpOption SetLookUpOption = eLookUpOption.CompareToSame, eMacAddressType type = eMacAddressType.Normal);

        ResultIssued IssuanceRequest(string strProductID, bool bReissuance = false, eMacAddressType type = eMacAddressType.Normal);
    }
}