package com.ning.billing.entitlement.engine.dao;
import java.util.List;
import java.util.UUID;
import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.entitlement.api.migration.AccountMigrationData;
import com.ning.billing.entitlement.api.user.Subscription;
import com.ning.billing.entitlement.api.user.SubscriptionBundle;
import com.ning.billing.entitlement.api.user.SubscriptionBundleData;
import com.ning.billing.entitlement.api.user.SubscriptionData;
import com.ning.billing.entitlement.events.EntitlementEvent;
public interface EntitlementDao {
public List<SubscriptionBundle> getSubscriptionBundleForAccount(UUID accountId);
public SubscriptionBundle getSubscriptionBundleFromKey(String bundleKey);
public SubscriptionBundle getSubscriptionBundleFromId(UUID bundleId);
public SubscriptionBundle createSubscriptionBundle(SubscriptionBundleData bundle, CallContext context);
public Subscription getSubscriptionFromId(UUID subscriptionId);
public UUID getAccountIdFromSubscriptionId(UUID subscriptionId);
public Subscription getBaseSubscription(UUID bundleId);
public List<Subscription> getSubscriptions(UUID bundleId);
public List<Subscription> getSubscriptionsForKey(String bundleKey);
public void updateSubscription(SubscriptionData subscription, CallContext context);
public void createNextPhaseEvent(UUID subscriptionId, EntitlementEvent nextPhase, CallContext context);
public EntitlementEvent getEventById(UUID eventId);
public List<EntitlementEvent> getEventsForSubscription(UUID subscriptionId);
public List<EntitlementEvent> getPendingEventsForSubscription(UUID subscriptionId);
public void createSubscription(SubscriptionData subscription, List<EntitlementEvent> initialEvents, CallContext context);
public void recreateSubscription(UUID subscriptionId, List<EntitlementEvent> recreateEvents , CallContext context);
public void cancelSubscription(UUID subscriptionId, EntitlementEvent cancelEvent, CallContext context);
public void uncancelSubscription(UUID subscriptionId, List<EntitlementEvent> uncancelEvents, CallContext context);
public void changePlan(UUID subscriptionId, List<EntitlementEvent> changeEvents, CallContext context);
public void migrate(UUID accountId, AccountMigrationData data, CallContext context);
public void saveCustomFields(SubscriptionData subscription, CallContext context);
}