package com.airlock.iam.common.domain.service.accountlink.persistence;

import com.airlock.iam.common.domain.model.accountlink.AccountLinkDataToPersist;
import com.airlock.iam.common.domain.model.accountlink.AccountLinkId;
import com.airlock.iam.common.domain.model.accountlink.AccountSub;
import com.airlock.iam.common.domain.model.accountlink.persistence.AccountLinkData;
import com.airlock.iam.common.domain.model.accountlink.persistence.AccountLinkUsernameChangeData;
import com.airlock.iam.common.domain.model.provider.ProviderId;
import java.util.Collection;
import java.util.Optional;

public interface AccountLinkPersister {
   AccountLinkData persistAndLoad(AccountLinkDataToPersist var1);

   void persist(AccountLinkDataToPersist var1);

   Collection<AccountLinkData> findByUser(String var1);

   Optional<AccountLinkData> findUnique(ProviderId var1, AccountSub var2);

   int deleteByUser(String var1);

   int delete(AccountLinkId var1);

   int updateUsername(AccountLinkUsernameChangeData var1);

   boolean hasLinkForProvider(String var1, ProviderId var2);
}
