package com.airlock.iam.admin.infrastructure.session;

import com.airlock.iam.admin.domain.model.session.AdminappSession;
import com.airlock.iam.base.misc.result.Result;
import com.airlock.iam.common.domain.model.state.SessionStateId;
import com.airlock.iam.common.infrastructure.exceptions.DeserializationFailedType;

public interface AdminappSessionSerializer {
   String serializeSession(AdminappSession var1);

   Result<AdminappSession, AdminappSessionSerializer.DeserializationFailedResult> deserializeSession(SessionStateId var1, String var2);

   record DeserializationFailedResult(DeserializationFailedType type, String message) {
      public static AdminappSessionSerializer.DeserializationFailedResult sessionNotDeserializable(String message) {
         return new AdminappSessionSerializer.DeserializationFailedResult(DeserializationFailedType.SESSION_NOT_DESERIALIZABLE, message);
      }
   }
}
